如果我有多个UISwitch,我怎么知道哪些是开启的?

时间:2009-01-05 06:16:50

标签: cocoa-touch

希望一切都好。

我在表视图中有22个UISwitch,我在一个函数中创建了所有这些开关对象,并在表视图中设置它们。

如何知道哪个开关打开或关闭?我想通过一种动作方法来做到这一点,但我不知道该怎么做。

如果有人遇到这个问题,请给我一些想法......

谢谢, Haresh。

3 个答案:

答案 0 :(得分:1)

执行此类操作的最佳方法是使用表视图控制器设置每个表格单元格作为委托以及指示单元格所呈现的切换的标记 - 然后让每个单元格检测到切换更改,然后告诉具有指示ID的交换机已被更改的代理。您可以将开关状态保存在由单元格开关标记存储的NSDictionary中。

这当然意味着一个自定义的UITableViewCell类,因此您可以将标记和委托链接存储回UITableViewController(注意,不要将此链接保留回您的表视图控制器)

EDIT 这个答案提供了您可能更喜欢的不同方法:

Getting the row of a NSButtonCell

答案 1 :(得分:0)

tableView:didSelectRowAtIndexPath:只会触发表视图中行本身的选择,这听起来不像你想要做的那样。

在创建UISlider实例的方法中,可以将这些实例作为键存储在NSMutableDictionary中(使用setObject:forKey),NSNumbers作为在以后的switch语句中使用的值。对于每个UISlider,通过使用类似于以下内容的方法将目标设置为控制器中的方法,确保记录其值的更改:

[slider addTarget:self action:@selector(sliderValueDidChange:forEvent:) forControlEvents:UIControlEventAllTouchEvents];

并在控制器中设置一个类似于此的方法:

- (void)sliderValueDidChange:(id)sender forEvent:(UIEvent *)event;

您可以在其中使用发件人,UISlider实例的NSDictionary和NSNumber的intValue上的switch语句来确定哪个滑块的值已更改以及新值是什么。

除了开/关开关,我还可以建议使用复选标记作为附件视图吗?然后,您可以使用tableView:didSelectRowAtIndexPath:跟踪用户对行的选择,如果元素已被选中,则在附件视图中显示复选标记。这可能更符合Apple的人机界面指南。

答案 2 :(得分:0)

配件视图上的复选标记??????找到一个例子'附件',但他们设置了一个按钮并设置了复选标记按钮的图像并取消勾选按钮..你的意思是说同样的那样