Swift:如何访问仅使用一个函数以编程方式创建的多个UI开关
我创建了一个表,其中每行上都有一个名称和一个UISwitch按钮。行数不是固定的(因此UISwitch的数量也不是固定的),它取决于用户条目。 我已设法为每个UISwitch提供了一个标记,但我不知道如何从@IBAction func访问它们 代码Swift:如何访问仅使用一个函数以编程方式创建的多个UI开关,swift,uiswitch,Swift,Uiswitch,我创建了一个表,其中每行上都有一个名称和一个UISwitch按钮。行数不是固定的(因此UISwitch的数量也不是固定的),它取决于用户条目。 我已设法为每个UISwitch提供了一个标记,但我不知道如何从@IBAction func访问它们 代码 您可以使用开关更改的操作中的sender.tag来访问标记属性。为此,您需要管理可变数组或可变字典 假设我们使用可变字典,它存储值如下 @{ @"1" : 1 , @"5" : 1 , @"8" : 1 , } 在本例中,我们有
您可以使用
开关更改的操作中的sender.tag
来访问标记属性。为此,您需要管理可变数组
或可变字典
假设我们使用可变字典,它存储值如下
@{
@"1" : 1 ,
@"5" : 1 ,
@"8" : 1 ,
}
在本例中,我们有3个开关处于打开状态,分别位于索引1、5和8处
假设用户点击索引6的开关,
在这种情况下,将调用“switchChanged()
”
在这种方法中,通过使用sender.tag
获取行的索引,您将获得Int
值,将其转换为String
,并检查字典中是否有该索引的值
若该值可用,则表示它以前处于打开状态,现在由用户关闭。所以在本例中,从字典中删除{,}
对
若该值不可用,则表示该值以前处于关闭状态,现在由用户打开。所以在本例中,将{,}
对添加到字典中
在func tableView(tableView:UITableView,cellForRowAtIndexPath-indepath:nsindepath)->UITableViewCell
方法中,检查indepath.row
变量的相同项,然后打开或关闭UISwitch
。我刚从nhgrif的链接中找到的另一篇帖子中发现,“switchChanged:”中缺少的是一个分号
它现在起作用了这里有一个方法来做这类事情。这个例子是用Objective-C编写的,但是如果你只是阅读它,它应该很容易翻译成Swift,即使你根本不懂Objective-C。let tag=sender.tag
@{
@"1" : 1 ,
@"5" : 1 ,
@"8" : 1 ,
}
switchView.addTarget(self, action: #selector(PIN.switchChanged(_:)), forControlEvents: UIControlEvents.ValueChanged)