8

我正在从自定义 TableViewCells 迁移tableView:cellForRow:atIndexPath:到使用自定义UITableViewCell子类。我是这样做的:

首先,创建空的 XIB,拖到UITableViewCell那里并放在UILabel上面。创建了一个类(的子类UITableViewCell)并在 Interface Builder 的属性编辑器中将该类设置为MyCell. 然后,在我的 TableViewController 中,输入以下内容:

- (void)viewDidLoad
{
 [super viewDidLoad];
 // load custom cell
 UINib *cellNIB = [UINib nibWithNibName:@"MyCell" bundle:nil];
 if (cellNIB)
 {
   [self.tableView registerNib:cellNIB forCellReuseIdentifier:@"MyCell"];
 } else NSLog(@"failed to load nib");
}

之后,我清除了所有自定义代码,tableView:cellForRow:atIndexPath:只留下了默认行:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"MyCell";
    MyCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    return cell;
}

当我运行这个时,我希望在每个单元格中看到一堆带有单个标签的单元格(我在创建 XIB 时放在中间的标签)。但相反,我看到的只是纯白色的空单元格,向 XIB 布局添加/删除组件并没有帮助。

我花了一天时间尝试不同的选项,例如在 Interface Builder 中为自定义单元格 XIB 设置重用标识符并在中加载视图tableView:cellForRow:atIndexPath:,但没有任何帮助。

4

1 回答 1

10

...但事实证明,我唯一错过的是在我的故事板中为这个 TableViewController 清除原型单元格的重用标识符。似乎 Storyboard 稍后会初始化其视图/组件viewDidLoad,而不是采用我漂亮的自定义单元格,xCode 将真实的单元格视图设置为仅纯白色单元格,这是新创建的 TableViewControllers 的标准。

再说一遍:转到您的 TableView 属性并删除您之前设置的重用标识符;)

我为此花了很多时间,所以我想如果我在这里分享这段经历可能会对某人有所帮助。

于 2012-11-15T16:37:20.750 回答