2011-10-30 11 views
9

iOS5では、ARCとストーリーボード上のtableViewのプロトタイプセルを使用して、以下のコードを置き換えることができます:プロトタイプセルでdequeueReusableCellWithIdentifierの動作が変更されましたか?

static NSString *CellIdentifier = @"Cell"; 

UITableViewCell *cell = [tableView 
    dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[UITableViewCell alloc] 
     initWithStyle:UITableViewCellStyleDefault 
     reuseIdentifier:CellIdentifier]; 
} 

// Configure the cell... 
return cell; 

UITableViewCell *cell = [tableView 
    dequeueReusableCellWithIdentifier:@"Cell"]; 
return cell; 

このリンクでこれを見ました:

http://www.raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-1

あらかじめありがとうございます!

Arildo

答えて

8

確かに、あなたのコードが正しい、ストーリーボードはautomaticaly素晴らしいこのコードの動作、新しい細胞をALLOC:

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

    //Configure cell 
    //[cell.lab1 setText:@"Test"]; 

    return cell; 
} 
+1

を持っていますなぜなら、この事は私にとってはうまくいかない。私は "無し"の細胞を得続けます。私は新しいマスターディテールプロジェクトを作成します。この例は素晴らしいです。 cellForRowIndexPathメソッドとテーブルサイズメソッドを追加し、サイズを2に設定すると、dequeueReusableCellWithIdentifierが "nil"を取得し続けるため、例外が発生します。 – bashan

+1

あなたはストーリーボードでtableCellを設定しましたか?このように:[リンク] http://minus.com/m59pfEOqW(注:セル識別子はストーリーボードとcellForRowAtIndexPathで同じです) – Kappe

+2

"awakeFromNib"メソッドのセルサブクラスで設定を行う必要があります。ストーリーボードからロードされているので、 "initWithStyle:"(呼び出されません)ではありません。 – avocade

3

これは、Appleが、使用することを意図方法ですが、私はそれに対してお勧めします。デバイス上でVoiceAssistが有効になっているときにdequeueReusableCellWithIdentifierがnilを返すバグがあります。つまり、このオプションをオンにしているユーザーの場合、アプリがクラッシュする可能性があります。これはまだあなたがより多くの情報と、ここで回避策を見つけることができるのiOS 5.1.1

のような問題である:

http://hsoienterprises.com/2012/02/05/uitableview-dequeuereusablecellwithidentifier-storyboard-and-voiceover-doesnt-work/

最後の段落は、私は得ることはありません回避策

関連する問題