我有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
}
,但这似乎无法奏效。
答案 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。