内置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。 希望有所帮助。

Interesting Posts