1

こんにちは、IOS 開発は初めてUITableViewで、ペン先で作成されたカスタム セルを使用する を作成しました。以下は、セルをロードしている私のコード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];  

IBの.xibファイルに移動し、フィールドをCustomCell探して次のように設定しますidentifierCustomCell

于 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 に答える