代码之家  ›  专栏  ›  技术社区  ›  KalleP

切换一个开关时保存信息

  •  1
  • KalleP  · 技术社区  · 6 年前

    如果两个开关中的任何一个被切换,我将尝试显示一个DisplayAlert。

    这是我的if声明:

     if(!SwitchOne.IsToggled || !SwitchTwo.IsToggled)
            {
                await DisplayAlert("Cannot save", "Enter info.", "Ok");
            }
    

    我希望在切换1个或两个开关时保存信息。然而,它似乎并不关心if语句中的。当我切换两个开关时,我可以保存页面,并且DisplayAlert不显示=很好。当我只切换一个开关时,显示警报显示。我不明白为什么,因为我在if语句中有。

    我不希望显示警报显示我是否切换任何开关。 感谢所有我能得到的帮助!

    4 回复  |  直到 6 年前
        1
  •  1
  •   Code Pope    6 年前

    为了你的案件你需要使用 && :

    if(!SwitchOne.IsToggled && !SwitchTwo.IsToggled)
            {
                await DisplayAlert("Cannot save", "Enter info.", "Ok");
            }
    

    现在,只有当两个开关都没有切换时,它才会显示警报。如果切换了其中任何一个,则不会立即显示警报。

     switch1 == toggled | switch2 == toglled
            true        |       true            =>      Do not show alert
            true        |       false           =>      Do not show alert
            false       |       true            =>      Do not show alert
            false       |       false           =>      show alert
    
        2
  •  0
  •   krobelusmeetsyndra AnalystCave.com    6 年前

    你可以做到

    if (!SwitchOne.IsToggled && !SwitchTwo.IsToggled)

    如果只切换一个开关(比如, SwitchOne )将评估为:

    if (!true && !false) = & gt; if (false & true) = & gt; if (false)

        3
  •  0
  •   Ivan Ičin    6 年前

    您正在检查开关是否关闭,如果只有一个开关关闭,那么很明显,它将显示消息,如果两个都不关闭,则不会显示消息…你应该:

    if(SwitchOne.IsToggled || SwitchTwo.IsToggled)
        {
            await DisplayAlert("Cannot save", "Enter info.", "Ok");
        }
    
        4
  •  0
  •   Rufus L    6 年前

    如果你把所有的事情都颠倒了,可能会更容易阅读,因为现在你正在测试负响应的负条件(如果开关1不被切换,开关2不被切换,那么我们就无法保存),这有时会让人困惑。

    这可能更易读:

    if (SwitchOne.IsToggled || SwitchTwo.IsToggled)
    {
        // At least one switch is toggled - we can save! 
    }
    else
    {
        await DisplayAlert("Cannot save", "Enter info.", "Ok");
    }