- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"];

    cell.firstLabel.text = [NSString stringWithFormat:@"%d", indexPath.row];
    cell.secondLabel.text = [NSString stringWithFormat:@"%d", NUMBER_OF_ROWS - indexPath.row];

    return cell;
}

这是Apple Table View Programming Guide的代码段
MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"];工作正常,不需要检查nil,因为该单元格是在故事板上定义的,并且始终返回有效单元格。

但是,如果我不使用故事板,那么如何以编程方式在表视图中使用多个自定义单元格? allocating and initializing MyTableViewCell涉及哪些问题

最佳答案

您应该使用方法

- (void)registerNib:(UINib *)nib forCellReuseIdentifier:(NSString *)identifier
- (void)registerClass:(Class)cellClass forCellReuseIdentifier:(NSString *)identifier

UITableView。您可以阅读here文档。

调用方法时
- (id)dequeueReusableCellWithIdentifier:(NSString *)identifier

,它将检查重用队列中是否有可用的单元格。如果不是,它将检查是否可以自动创建此单元格。如果您以前为该重用标识符注册了单元格类或nib,它将使用类或nib创建新单元格并返回它。如果您没有注册任何内容,它将返回nil。

最好使用注册,因为如果您具有用于不同重用标识符的不同自定义单元,则用于创建这些单元的代码将变得混乱。这也是正确的方法。分别在iOS5和iOS6中添加了注册方法。用于由程序员创建自定义单元的代码与旧版本的iOS有关。

08-19 00:30