objective-c - 你在哪里配置 UITableViewCell 子类?

标签 objective-c ios cocoa-touch uitableview

我有一个代表 Person 的实体和一个 UITableViewCell 子类,它显示所述人的一些属性。

问题是:您通常在哪里配置(设置文本、图片等)表格单元格?你:

A) 在实现 tableView:cellForRowAtIndexPath: 时在 UITableViewController 子类中配置它?

B) 将 Person 对象传递给 UITableViewCell 子类并让子类自行配置?

C) 完全不同的东西?

奖励积分

如果你用选项 A 回答,那么这个呢?

假设对于 TableView 中的第一行,我需要将所有标签的文本加粗。这会完全改变你的看法吗?你明白我在这里得到了什么,如果你在 View Controller 中配置单元格, View Controller 将变得臃肿,包含它并不真正需要的信息。但是,如果将所有配置放在表格单元子类中,就会失去一些可重用性。这绝对是一种权衡,但我想知道大多数工程师会选择什么。

最佳答案

转到您的界面生成器并选择单元格。使用检查器,将您的单元格再次链接到您的自定义 UITableViewCell

Inspector

之后,在 tableView:cellForRowAtIndexPath: 而不是 UITableViewCell 实例化你的单元格,配置它,瞧。

然后,回答您的评论:

将单元格项链接到自定义单元格标题中的属性。 link cell

假设我在这个例子中创建了属性 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/

相关文章:

ios - 动画 UIButton 的标题更改

iphone - 在 iOS 中获取 UIViewController 类名

iphone - 呈现具有翻转卡片效果的模态视图 Controller (翻转 + 变换 + 平移)

objective-c - 将 NSMutableArray 从一个 View Controller 传递到另一个 View Controller 中的函数

ios - 在委托(delegate)方法中进行更改时未反射(reflect) View 更改

ios - 如何从弹出窗口中显示的 UIViewController 中找到 UIPopoverController?

ios - NSArray writeFileToPath 失败

iphone - 为什么 pow() 在这种情况下报告无限值?

iphone - 既然 xcode 4 更改了生成的代码,我应该如何将项目添加到 Core Data 中的列表中?

ios - 如何清除/清空 viewWillDisappear 上的粘贴板