我有一个代表 Person
的实体和一个 UITableViewCell
子类,它显示所述人的一些属性。
问题是:您通常在哪里配置(设置文本、图片等)表格单元格?你:
A) 在实现 tableView:cellForRowAtIndexPath:
时在 UITableViewController
子类中配置它?
B) 将 Person 对象传递给 UITableViewCell
子类并让子类自行配置?
C) 完全不同的东西?
奖励积分
如果你用选项 A 回答,那么这个呢?
假设对于 TableView 中的第一行,我需要将所有标签的文本加粗。这会完全改变你的看法吗?你明白我在这里得到了什么,如果你在 View Controller 中配置单元格, View Controller 将变得臃肿,包含它并不真正需要的信息。但是,如果将所有配置放在表格单元子类中,就会失去一些可重用性。这绝对是一种权衡,但我想知道大多数工程师会选择什么。
最佳答案
转到您的界面生成器并选择单元格。使用检查器,将您的单元格再次链接到您的自定义 UITableViewCell
。
之后,在 tableView:cellForRowAtIndexPath:
而不是 UITableViewCell
实例化你的单元格,配置它,瞧。
然后,回答您的评论:
将单元格项链接到自定义单元格标题中的属性。
假设我在这个例子中创建了属性 UILabel cellTitle
,所以当我在 tableView:cellForRowAtIndexPath:
实例化单元格时,我只需要设置文本这个属性。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"pedidosCell"; //the same at the nib!
CustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
// Configure the cell...
cell.cellTitle.text = @"This is my cell title";
// Using your Person object, that should be available here.
cell.cellTitle.text = [Person name];
return cell;
}
至于粗体,您应该坚持使用选项 A。在 UITableViewCell
中加载数据是一项不常见的任务,因为处理滚动应该非常快。将数据放入其中不会像 Apple 预期的那样工作。
当然,您可以通过将 indexPath.row
传递给它,让单元格知道它的位置,然后在需要时将文本设置为粗体。我不知道这将如何与 dequeueReusableCellWithIdentifier:
关于objective-c - 你在哪里配置 UITableViewCell 子类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12359766/