内置UIControls的iOS原型单元
到目前为止,我只需要实现具有预定义devise(正常,小标题等)的原型单元格,这并不是问题。
现在我需要实现包含像分段开关,开关或其他任何控件的原型单元。 问题是我还没有能够找出触发的行为是如何实施的,它们是如何与控制有关的。 此外,我还没有find任何示例如何实现单个UITableViewController中不同的原型单元格。
我知道这是一个普遍的问题,但我很欣赏这里的一些指针。 也许有人知道一些文档,教程等,那么,任何帮助将做,
提前Thnaks。
我花了一段时间才明白如何使用原型单元。 如果要访问原型单元格内的用户界面元素,则必须创buildUITableViewCell的子类,并将其分配给Interface Builder中的原型单元。 然后,您必须手动定义IBOutlet属性,例如:
@interface OptionSwitchCell : UITableViewCell @property (weak, nonatomic) IBOutlet UISwitch* switchControl; @end
之后,您可以通过从元素拖动到助理视图中的属性定义来连接界面元素。 IBActions可以在拥有的View Controller中定义。 您可以控制从界面元素拖动到View Controller头文件并创build一个操作。 在动作实现内部,你可能想知道哪个单元触发了这个动作。 我这样做:
@implementation SomeTableViewController - (IBAction)toggleActivity:(id)sender { OptionSwitchCell* cell = (OptionSwitchCell *)[sender superview].superview; NSIndexPath *indexPath = [self.tableView indexPathForCell:cell]; ... } @end
寻找相应单元格和索引path的另一个解决scheme(由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]; ... }
虽然这有点古怪,但到目前为止还没有find更好的解决scheme。 希望有所帮助。