使用标签来检测是否有东西被窃听

时间:2013-09-12 15:03:24

标签: ios objective-c uitableview uistoryboard

我有一个UITableView我有一些可点击的单元格和一些UISwitch的单元格。我认为检测UITableViewUISwitch是否被点击的最佳方法是使用标记。

enter image description here

我已经为这些项目添加了标签,但我不太清楚如何对其进行编码以便进行检测。我怎么能这样做?

注意:我意识到这是iOS 7,但由于Apple现在允许所有开发人员提交应用程序,我认为可以安全地假设它不再是NDA。

2 个答案:

答案 0 :(得分:2)

 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];

答案 1 :(得分:2)

@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....
}

你的桌面滚动吗?如果包含开关的单元格在屏幕上滚动,则由于表视图回收单元格的方式,您可能在访问它时遇到一些问题。代码abouve假设您不会遇到此问题。