Ios 自定义UITableViewCell的首选方法

Ios 自定义UITableViewCell的首选方法,ios,objective-c,uitableview,ios7,Ios,Objective C,Uitableview,Ios7,经过初步研究,我正在尝试自定义UITableViewCell。我似乎可以通过两种方式自定义UITableViewCell 备选案文1: 如TableViewCell iOS中所述,我可以使用脚本添加自定义标签,并使用界面生成器指定UI约束(如果有),然后使用viewWithTag从代码访问标签,如下所述 label = (UILabel *)[cell viewWithTag:1]; label.text = @"something" 备选案文2: 我可以创建一个自定义xib文件,使用inte

经过初步研究,我正在尝试自定义UITableViewCell。我似乎可以通过两种方式自定义UITableViewCell

备选案文1:

如TableViewCell iOS中所述,我可以使用脚本添加自定义标签,并使用界面生成器指定UI约束(如果有),然后使用viewWithTag从代码访问标签,如下所述

label = (UILabel *)[cell viewWithTag:1];
label.text = @"something"
备选案文2:

我可以创建一个自定义xib文件,使用interface builder设计表格单元格,指定UI约束(若有),并使用interface builder将自定义类从UITableViewCell继承,将所有标签作为属性连接到相应的标签,并使用以下代码基于xib创建UITableViewCell

[tableView registerNib:[UINib nibWithNibName:@"MyCustommCell" bundle:nil]forCellReuseIdentifier:@"resuseIdentifier"];
MyCustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"reuseIdentifier"];
MyCustomTableViewCell.myCustomLabel.text = @"something";
我同意第二个选项与第一个选项相比有点耗时,但与第一个选项相比,它给我带来了以下优势:

我可以将其重新用于类似样式的UITableViewCell 与选项1相比,可读性更好 更好地分离关注点,UITableViewController不必担心单元在interface builder中的布局,而是将其正确地委托给单独的xib文件
尽管有上述优势,但我更担心的是,为什么苹果文档在解释如何定制UITableViewCell时没有选择第二个选项?我是不是漏掉了什么明显的东西?或者,与第一种方法相比,第二种方法是否存在任何性能问题?

我根本不想说明为什么苹果文档中存在或不存在某些内容,但根据我的推测,文档中未明确指定选项2的一个原因是,您实际上可以直接在UITableView的故事板显示中将其设置为原型单元。这基本上是nib UITableViewCell的GUI内联,它将自动正确设置选项2中描述的所有方法,这样您就不需要调用任何方法。

您可以在故事板中使用UITableViewCell的子类,因此您的问题设置了错误的选择。选择不是在使用nib或故事板之间,而是在子类化或不子类化之间。@jlehr不是在子类化或不子类化之间,而是在nib或故事板之间,因为两者都提供了丰富的方式来使用约束和指定样式来布局标签您可以在故事板中做同样的事情,那么,如何在故事板和nib之间进行选择呢?您也可以在没有IB的情况下以编程方式完成所有事情,包括约束。这取决于您的偏好。@jlehr在情节提要中,您设计的是整个ViewController,而在nib中,我只是创建自己的自定义UITableViewCell,定义其布局,然后使用它,因此,很明显,这是情节提要和nib之间的选择