我想获得有关我与之交互的单元格的信息

时间:2015-04-06 22:40:06

标签: ios objective-c uitableview

http://i.stack.imgur.com/WOR2b.png

我有一个带有设置的控制器和一个带有自定义单元格的表。用户将选择他想要显示的源,因此我需要有关开关的信息,以便将其保存在用户默认值中。我已经创建了一个方法

- (IBAction)sourceSwitcherValueChanged:(id)sender {
if ([sender isOn]) {
    [[CSDMainManager sharedManager].userDefaults setBool:YES forKey:(???)]
}else{
    [[CSDMainManager sharedManager].userDefaults setBool:NO forKey:(???)]
}

}

我不知道如何从单元格中提取数据,您更改了切换器的值,或只是知道它具有什么标题。 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

由于您有一个分布在多个组件(单元格)中的数据集,因此数据源对象实际包含这些数据是最合乎逻辑的。

这意味着数据源负责为表视图创建单元格,并根据它所篡改的数据设置单元格状态。如果单元状态随后发生变化(按下开关),则单元应报告回数据源。单元格上的自定义委托实现应该可以解决问题。

例如,如果您的视图控制器包含带有自定义单元格的表视图:

  • 让控制器成为表格视图的数据源
  • 让控制器包含所有数据(设置)参数
  • 创建一个委托,其中包含修改设置所需的方法并将这些方法实现到视图控制器中
  • 为您创建的每个单元格分配代理
  • 状态更改时在单元格中调用委托

因为在你自己的情况下,为每个设置创建一个带有方法的委托似乎有点过分,我宁愿创建一个所有者然后创建一个委托。区别在于您传递对象本身,如cell.owner = self中所有者是单元格的弱属性,并且与控制器的类型相同。现在,控制器可能具有公共属性或方法,用于公开数据或方法以修改数据。