到目前为止,我只需要实现具有预定义设计(正常,副标题等)的原型单元,这不是问题.
现在我需要实现原型单元,其中包含一些控件,如分段开关,开关或任何其他.问题是我无法找到触发的动作是如何实现的以及它们与控件的关系.此外,我还没有找到任何关于如何在单个UITableViewController中实现不同原型单元的示例.
我知道这是一个普遍的问题,但我会在这里感谢一些指点.也许有人知道一些文档,教程等等.好吧,任何帮助都可以,
事先提醒.
解决方法
我花了一段时间才了解如何使用原型细胞.如果要访问原型单元格内的用户界面元素,则必须创建UITableViewCell的子类并将其分配给Interface Builder中的原型单元格.
然后你必须手动定义IBOutlet属性,例如:
然后你必须手动定义IBOutlet属性,例如:
@interface OptionSwitchCell : UITableViewCell @property (weak,nonatomic) IBOutlet UISwitch* switchControl; @end
之后,您可以通过控制 – 从元素拖动到辅助视图中的属性定义来连接界面元素.
相反,IBActions可以在拥有的View Controller中定义.您可以控制 – 从界面元素拖动到View Controller头文件并创建操作.在动作实现中,您可能想知道哪个单元格正在触发操作.我是这样做的:
@implementation SoMetableViewController - (IBAction)toggleActivity:(id)sender { OptionSwitchCell* cell = (OptionSwitchCell *)[sender superview].superview; NSIndexPath *indexPath = [self.tableView indexPathForCell:cell]; ... } @end
查找相应单元格和索引路径的另一种解决方案(通过jrturton):
- (IBAction)toggleActivity:(id)sender { CGPoint hitPoint = [sender convertPoint:CGPointZero toView:self.tableView]; NSIndexPath *hitIndex = [self.tableView indexPathForRowAtPoint:hitPoint]; OptionSwitchCell* cell = (OptionSwitchCell *)[self.tableView cellForRowAtIndexPath:hitIndex]; ... }
虽然这有点古怪,但到目前为止我还没有找到更好的解决方案.希望有所帮助.