从UITableView单元格获取数据

时间:2015-03-20 05:58:10

标签: ios objective-c uitableview

我在从UITableView中的单元格中获取数据时遇到问题。
我有很多单元格(其他类与xib)在表视图中有一些人信息。每个单元都有自己的开关。

在表格下面是一个按钮,它会向按下开关的每个人发送信息。
我在人员课程中设置了属性,该属性将记住人员切换是否打开。 cellForRow方法中的每个开关都设置了选择器,其中包含切换操作的方法。

问题是我不知道,在哪里设置关于开关状态的人物属性值。在选择器方法中,我无权访问个人信息。
我有发件人,但没有关于人的信息。

4 个答案:

答案 0 :(得分:1)

我会以两种方式之一完成此操作,具体取决于您的具体操作:

  1. 在配置时将person对象的指针传递给单元格,让单元格处理更新包含开关值的属性。
  2. 制作具有功能的协议

    -(void)switchInCell:(UITableViewCell*) cell valueModifiedTo:(NSInteget) newValue
    

    在视图控制器中采用新协议,将新协议类型的委托属性添加到单元格,如果切换值更改,则从单元格内调用该委托方法。

    在视图控制器中的方法实现中,您可以执行

    NSIndexPath* indexPath = [theTable indexPathForCell:cell];
    PersonClass* person = Your_DataSource_Array [indexPath.row];
    //modify person properties
    

答案 1 :(得分:0)

您可以在单元格创建时(例如,当您添加所有UIViews,例如标签,按钮等)时,为表View Cell的“content”属性的每个子视图将UIView标记属性设置为一个数字。 ..),给每个子视图一个唯一的值。

稍后,如果只是给定了UITableViewCell,您可以通过检查其标记值来遍历内容视图的子视图并找到您的开关(以及任何其他UIViews)。

答案 2 :(得分:0)

如果您使用自定义单元格,则可以在单元格的实现中使用switch的方法。通过该方法,您可以使用委派或通知返回到数据源,并且可以传递单元格的indexPath以进一步识别数据中的对象。您可以拥有一个属性来存储单元格的indexPath实现单元格的类,并且可以在cellForItemAtIndexPath:方法中将值设置为该属性。祝你好运!

答案 3 :(得分:0)

你说你有发件人。然后你需要只使用你正在使用的控件的自定义子类,并创建一个这样的自定义属性。

@property (nonatomic, strong)NSIndexPath *indexPath;

并将其设置在cellforrowatindexpath中。当您的选择器调用时,您可以将发件人解析为自定义创建的类,并从属性中获取值。尝试一次。