我在从UITableView中的单元格中获取数据时遇到问题。
我有很多单元格(其他类与xib)在表视图中有一些人信息。每个单元都有自己的开关。
在表格下面是一个按钮,它会向按下开关的每个人发送信息。
我在人员课程中设置了属性,该属性将记住人员切换是否打开。 cellForRow方法中的每个开关都设置了选择器,其中包含切换操作的方法。
问题是我不知道,在哪里设置关于开关状态的人物属性值。在选择器方法中,我无权访问个人信息。
我有发件人,但没有关于人的信息。
答案 0 :(得分:1)
我会以两种方式之一完成此操作,具体取决于您的具体操作:
制作具有功能的协议
-(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中。当您的选择器调用时,您可以将发件人解析为自定义创建的类,并从属性中获取值。尝试一次。