内置UIControl的iOS原型单元

到目前为止,我只需要实现具有预定义设计(正常,副标题等)的原型单元,这不是问题.

现在我需要实现原型单元,其中包含一些控件,如分段开关,开关或任何其他.问题是我无法找到触发的动作是如何实现的以及它们与控件的关系.此外,我还没有找到任何关于如何在单个UITableViewController中实现不同原型单元的示例.

我知道这是一个普遍的问题,但我会在这里感谢一些指点.也许有人知道一些文档,教程等等.好吧,任何帮助都可以,

事先提醒.

解决方法

我花了一段时间才了解如何使用原型细胞.如果要访问原型单元格内的用户界面元素,则必须创建UITableViewCell的子类并将其分配给Interface Builder中的原型单元格.
然后你必须手动定义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];
    ...
}

虽然这有点古怪,但到目前为止我还没有找到更好的解决方案.希望有所帮助.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...