2012-03-22 10 views
7

iOSアプリケーションでは、UITableView#dequeueReusableCellWithIdentifierを使用する前に、nibファイルをテーブルビューに登録する必要があります。再利用識別子が既にUITableViewに登録されているかどうかを確認するにはどうすればよいですか?

例:

static NSString *myReuseIdentifier = @"MyReuseIdentifier"; 
UINib *cellNib = [UINib nibWithNibName:myReuseIdentifier bundle:nil]; 
[self.tableView registerNib:cellNib forCellReuseIdentifier:myReuseIdentifier]; 

ペン先が既にのUITableViewに登録されているかどうかを確認する方法はありますか?

私は自分のアプリケーション内の複数のコントローラ間でさまざまなテーブルで使用するカスタムセルを持っています。コードの一部をマクロに移動したいと思います。セルは再利用する準備ができていない場合は、予定の何ということならば、しかし

-dequeueReusableCellWithIdentifier: 

戻りnil

-(CustomCell *)customCell:(UITableView *)tableView 
{ 
    static NSString *reuseIdentifier = @"MyReuseIdentifier"; 
    if (![table hasAlreadyRegisteredNib:reuseIdentifier]){ 
     UINib *cellNib = [UINib nibWithNibName:reuseIdentifier bundle:nil]; 
     [self.tableView registerNib:cellNib forCellReuseIdentifier:reuseIdentifier];  
    } 
    CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifier]; 
    return cell; 
} 
+0

あなたのnibをviewDidLoadメソッドに登録してみませんか? – JiaYow

+0

私はこれをいくつかのコントローラ間で共有されているマクロに張りたいので、 – bodacious

+0

しかし、さまざまなテーブルがあるので、各テーブルにnibを登録する必要があります。 –

答えて

4

ような何かが私はわかりません。それ以外の場合は、セルを返すので、簡単に試すことができます。

+0

すばらしいヒント!だから私は、セルがnilであるかどうかを調べることができます。もしそうなら、Nibをテーブルに登録して、セルを返します。ありがとう – bodacious

+0

iOS 5にNIBを登録するには、nilに依存するときは注意してください。VoiceOverが有効な場合、バグがあります。この場合、常にnilが返されます。だからあなたは無限ループ登録ループに終わるでしょう。詳細:http://stackoverflow.com/a/13881778/235297 –

0

registerNib:forCellReuseIdentifier:のポイントは、定型コードを減らすことです。 viewDidLoadメソッドでこれを一度呼び出すことはできますか?

+0

複数のコントローラ間で同じコードを繰り返さないようにしようとしていましたが、代わりにこれをマクロとして書きました – bodacious

関連する問題