1

嗨,我是 IOS 开发新手,我创建了一个UITableView使用在 nib 中创建的自定义单元格的程序。下面是我ViewController加载单元格的代码,但是如果我上下滚动 3 次,应用程序会崩溃,因为我认为我没有正确地重用单元格。我四处搜索,但我发现的大部分代码/解决方案似乎已经过时了。我的代码低于任何帮助,非常感谢!

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"CustomCell";
    CustomCell *cell = (CustomCell *) [tableView dequeueReusableCellWithIdentifier:@"cellIdentifier"];
    if (cell == nil) {
        NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
        for (id currentObject in topLevelObjects){
            if ([currentObject isKindOfClass:[UITableViewCell class]]){
                cell =  (CustomCell *) currentObject;
                break;
            }
        }
    }
    cell.TITLE.text = [NSString stringWithFormat:@"\"%@\"", [TITLE objectAtIndex:indexPath.row]];
    cell.desc.text = [desc objectAtIndex:indexPath.row];
    cell.votes.text = [votes objectAtIndex:indexPath.row];
    return cell;
}
4

2 回答 2

3

更改行

CustomCell *cell = (CustomCell *) [tableView dequeueReusableCellWithIdentifier:@"cellIdentifier"];  

成为

CustomCell *cell = (CustomCell *) [tableView dequeueReusableCellWithIdentifier: CellIdentifier];  

转到您CustomCell在 IB 中的 .xib 文件,查找该identifier字段并将其设置为CustomCell

于 2012-08-09T21:04:10.213 回答
0

您可以为 tableView 注册 nib,例如:

(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *cellIdentifier = @"CustomCell";
    CustomCell *cell = (CustomCell *) [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if (cell == nil) {
        [tableView registerNib:[UINib nibWithNibName:@"CustomCell" bundle:nil] forCellReuseIdentifier:cellIdentifier];
        cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    }

    //...

    return cell;
}
于 2016-01-25T00:33:13.367 回答