次の手順で、iPhoneアプリにカスタムテーブルビューセルを作成しました。
- ストーリーボードで、サンプルセルを作成し、
UILabel
とをドラッグしましたUIImageView
。 - のサブクラスを作成した新しいファイルを追加しました
UITableViewCell
。 - Interface Builderで、セルを選択し、そのクラスを手順2で作成したクラスとして割り当てました。
- カスタムテーブルビューセルのコードで、2つのIBOutletプロパティを作成し、それらを自分
UILabel
とUIImageView
ストーリーボードに接続しました。 私のカスタムテーブルビューセルには、独自の属性を設定する別のオブジェクトを受け取るメソッドも含まれています。
-(void)populateWithItem:(PLEItem *)item { if (item.state == PLEPendingItem) { status.text = @"Pending upload..."; //status is a UILabel IBOutlet property } else if(item.state == PLEUploadingItem) { status.text = @"Uploading..."; } imageView.image = [UIImage imageWithContentsOfFile:item.path]; //imageView is the UIImageView IBOutlet property }
このメソッドは私から呼び出されますtableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath as follows:
PLEPendingItemCell* cell = (PLEPendingItemCell*)[tableView dequeueReusableCellWithIdentifier:item_id];
if (cell == nil) {
cell = [[PLEPendingItemCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:pending_id];
}
[cell populateWithItem:((PLEItem*)[itemList objectAtIndex:indexPath.row])];
return cell;
問題は、セルが常に空で表示されることです。UILabel
PopulateWithItemにブレークポイントを設定し、そのメソッド内でステータスと画像の両方UIImageView
がnilであることに気付きました。
IBはこれらを初期化すべきではありませんか?そうでない場合は、どこでそれを行う必要がありますか?