2

ストーリーボードを使用して、別のへのナビゲーションを行うビューを持つシンプルなアプリを実行UITableViewしています。UITableViewCellUIView

したがって、テーブルビューのセルにデータを入力するようにコーディングする必要があります。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellIdentifier = @"SampleCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
        NSLog(@"cai no init da cell");
    }

    GPItem *item = [self.items objectAtIndex:indexPath.row];

    cell.textLabel.text = @"Post";
    cell.detailTextLabel.text = item.imageURL;

    return cell;
}

if (cell == nil) { ...コードが実行されないことに気付いたので、ストーリーボードのセルを使用して実行する必要がありますか?

ありがとう。

4

3 に答える 3

5

あなたは正しいです; ストーリーボードを使用している場合、そのコードはnil以外のセルを返すことが保証されています。また、iOS 6では、新しい呼び出しがnilを返すdequeueReusableCellWithIdentifier:forIndexPath: ことはありません。私の本の議論を参照してください:

http://www.apeth.com/iOSBook/ch21.html#_registering_a_cell_class

于 2013-02-13T23:36:56.893 に答える
0

テーブルビューのプロトタイプセルでUITableViewCellを宣言した場合、それはすでに割り当てられており、デキューする必要があります。カスタムUITableViewCellサブクラスを使用している場合は、それがnilであるかどうかを確認し、必要に応じて新しいエンティティを割り当てる必要があります。

于 2013-02-13T23:36:45.287 に答える
0

いいえ、ストーリーボードで作成されたセルを使用する場合、そのコードは必要ありません。

このコードを削除してidentifier、Interface Builderのセルに指定したものと、コードで使用する識別子がドリフトした場合に、早期にクラッシュするようにすることをお勧めします。このスニペットはこのエラーをマスクし、意図していなかった可能性が最も高いセルを提供します。

于 2013-02-13T23:38:57.863 に答える