UISwitch没有关闭?

时间:2016-08-25 11:53:34

标签: ios swift swift2

我有3个开关。我想要它,所以当一个人打开另一个2关闭。

我的代码目前看起来像这样。

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_scrolling_activity_add_assignment);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_1);
        //Toolbar toolbar2 = (Toolbar) findViewById(R.id.toolbar_2);
        setSupportActionBar(toolbar);
       // setSupportActionBar(toolbar2);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setTitle("");

        }
    public boolean onOptionsItemSelected(MenuItem item) {

        switch (item.getItemId())
        {
            case android.R.id.home:
                this.finish();
                return true;
        }
        return true;
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

我只是想关掉开关,但设置为false会将它们打开。

我尝试过if MPHSwitch.on { KPHSwitch.enabled = false MperSSwitch.enabled = false } ,但这似乎无法奏效。

1 个答案:

答案 0 :(得分:2)

在您的情况下将代码更改为以下内容:

public static class Extension
{
    public static string ToSQEscapedStringJS<T>(this T unescapedStr)
    {
        if (unescapedStr == null || unescapedStr.ToString() == "")
        {
            return "''";
        }
        // replace ' by @@@
        var escapedStr = (unescapedStr).ToString().Replace("'", "@@@"); 
        // JS code to replace @@@ by '
        string unEscapeSQuote = "replace(/@{3}/g, String.fromCharCode(0x27))"; 
        // add @@@ escaped string with conversion back to '
        return $"('{escapedStr}'.{unEscapeSQuote})"; 
    }
}

问题是,你在这里使用了错误的属性,而你应该使用setOn方法。

来自Apple Documentation on UISwitch

  

<强> 泄液线(_:动画:)

     

将开关的状态设置为On或Off,可选择设置动画   过渡。

您正在做的是,在这种情况下,您正在改变UIControl的操作能力,即Switch。

Apple Documentation on UIControl Class开始,这就是启用的功能:

  

将此属性的值设置为true以启用控件或false   禁用它。启用的控件能够响应用户   交互,而禁用的控件忽略触摸事件,可能   以不同方式绘制。将此属性设置为false会添加   UIControlStateDisabled标志到控件的状态位掩码;启用   控件再次移除该标志。

您正在使UISwitch忽略触摸事件,而这反过来使其重绘自身,将颜色更改为灰色。

所以在你的情况下,你必须使用setOn。