我有一个UITableView
可以点击的单元格和一些具有UISwitch
. 我认为检测 a UITableView
orUISwitch
是否被点击的最好方法是使用标签。
我已经为这些项目添加了标签,但我不太确定如何对其进行编码以进行检测。我怎样才能做到这一点?
注意:我知道这是 iOS 7,但由于 Apple 现在允许所有开发人员提交应用程序,我认为可以安全地假设它不再受 NDA 保护。
我有一个UITableView
可以点击的单元格和一些具有UISwitch
. 我认为检测 a UITableView
orUISwitch
是否被点击的最好方法是使用标签。
我已经为这些项目添加了标签,但我不太确定如何对其进行编码以进行检测。我怎样才能做到这一点?
注意:我知道这是 iOS 7,但由于 Apple 现在允许所有开发人员提交应用程序,我认为可以安全地假设它不再受 NDA 保护。
UISwitch *label = (UISwitch *)[self viewWithTag:2];
建议:如果您不使用属性来保持对这些项目的引用 - 请确保您在代码中拥有比 1、2、3 更好的东西。列举这些元素,例如:
typedef enum {
kUIElementTableView,
kUIElementSaveSwitch
} UIElements;
UISwitch *label = (UISwitch *)[self viewWithTag:kUIElementTableView];
UISwitch *label = (UISwitch *)[self viewWithTag:kUIElementSaveSwitch];
@Grzegorz Krukowski 的回答向您展示了如何控制代码中的切换。
您还需要设置一个方法,以便在您点击开关后调用。这样做的方法是这样的:
获取对您的开关的参考,也许在viewDidLoad
UISwitch *label = (UISwitch *)[self.view viewWithTag:2];
然后设置一个方法,一旦触发控制事件就运行
[label addTarget:self action:@selector(switchValueChanged:)
forControlEvents:UIControlEventValueChanged];
- (void)switchValueChanged:(UISwitch *)switch {
// Do something here....
}
你的 tableview 滚动吗?如果包含开关的单元格滚动到屏幕外,由于表格视图循环单元格的方式,您可能无法访问它。上面的代码假设您不会遇到此问题。