iOS 5 ストーリーボードでカスタムプロトタイプスタイルのテーブルセルを初期化する方法は? 質問する

iOS 5 ストーリーボードでカスタムプロトタイプスタイルのテーブルセルを初期化する方法は? 質問する

iOS 5 とストーリーボードに移行中です。デフォルトのセル スタイルのテーブル ビューを使用すると、すべて正常に動作します。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifierFromStoryboard"];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"MyIdentifierFromStoryboard"];
    }
    return cell;
}

「if (cell == nil)」ブロックが削除されている例を見たことがあります。しかし、それを削除すると、アプリがクラッシュし、「UITableView dataSource は tableView:cellForRowAtIndexPath: からセルを返す必要があります」というメッセージが表示されます。これは上記のように機能するため、問題ではありません。

問題は、セルにカスタム スタイルを使用したいので、initWithStyle を使用できないことです。ストーリーボードで設計したカスタム セルを初期化するにはどうすればよいですか?

以前の 5 より前のアプリには、このようなものを使用する nib とクラスがありましたが、現在はストーリーボードを使用しています。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    MyCustomTableCell *cell = (MyCustomTableCell *) [tableView dequeueReusableCellWithIdentifier:@"MyCustomIdentifier"];
    if (cell == nil) {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MyCustomTableCell" owner:self options:nil];
        cell = (MyCustomTableCell *) [nib objectAtIndex:0];
    }
    return cell;
}

ベストアンサー1

こちらです

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";
    CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    return cell;
}

おすすめ記事