2014-02-07 73 views
0

有没有在代码中添加一些隐藏信息到UITableViewCell的方法?将隐藏信息添加到UITableViewCell

使用案例:

  • 在活动供稿,(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath被调用,每个单元都有一个活动。每个都有自己独特的“activityId”。
  • 每个细胞都有了其中的一些按钮(具有唯一的标签),并按下时,给定的活动是“喜欢”
  • 每个按钮都有一个IBOutlet,那么它会调用模型然后处理像

我对IBOutlet中的代码是:

- (IBAction)buttonUp:(UIButton *)sender { 

UIButton *btn = (UIButton *) sender; 
UITableViewCell *cell = (UITableViewCell *) [[btn superview] superview]; 

UIView *cellView = [cell.contentView viewWithTag: ..myUniqueButtonTag.. ]; 

NSLog(@"activityId is: %@", ...); 
} 
+0

使用cell.accessibilityValue并为其分配数据..当点击找到该单元格及其accessibilityabilityValue –

回答

6

听起来像是你需要创建一个自定义的UITableViewCell类,如果你想在你的细胞中做更复杂的事情那么标准都允许 - https://developer.apple.com/library/ios/documentation/userexperience/conceptual/tableview_iphone/TableViewCells/TableViewCells.html

+0

我真正需要的唯一的事情是activityId ...我真的需要一个全新的子类吗? –

+0

嗯,也许你可以使用标签属性,如果你的ID是一个NSNumber。但是,如果你真的需要做的就是添加一个属性,那么UITableViewCell的子类很容易。如果你想扩展它的功能,将来可能会有一个子类。 – ansible

+0

,我可能会想要(实际上,将需要)。所以,这似乎是最好的行动方针。关闭你的头顶,知道设置它时应该避免的任何大的陷阱?编辑:将接受这个答案作为正确的时间限制 –

0

您不应该这样做superview shuffle[[btn superview] superview],因为它迟早会崩溃。

我同意@ansible您应该创建一个自定义单元格并使用委托关系,以便按钮告诉单元格它被点击并且单元格告诉委托。这是最好和最合适的解决方案。

对于作弊者而言,请考虑在按钮上使用objc_setAssociatedObject将id信息与它关联,以便您可以在操作方法中访问它。

+0

我已经提前做了一个自定义单元格,但是当按下按钮时,我依靠'[[[btn superview] superview] superview]'来获得定制单元的类。关于你的第一句话,有没有更好的办法? –

+0

使单元成为按钮方法的目标并让它转发该操作。 – Wain