2015-04-06 35 views
0

http://i.stack.imgur.com/WOR2b.png我想获得小区i交互的信息与

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

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

}

我不知道如何从一个细胞,在那里你已经改变了切换的数据中抽取数据,或只知道有什么样的标题。 任何想法?

回答

0

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

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

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

  • 有控制器是用于表视图
  • 具有控制器包括所有的数据(设置)参数的数据源
  • 创建包含修改的设置,并实现这些方法到视图控制器
  • 指派代表到每一个细胞所需要的方法的委托创建
  • 呼叫细胞的委托时,状态改变

由于案件是你自己的,似乎矫枉过正,以创建一个委托具有每个设置我宁愿创建所有者然后委托的方法。不同之处在于你传递对象本身,如cell.owner = self所有者是单元格的弱属性,并且与控制器类型相同。现在控制器可能有公开的属性或方法来暴露数据或修改数据的方法。