2016-08-16 5 views
0

私はUITableViewCellのサブクラスであるクラスを作成しましたが、同じものとしてxibファイルを作成しました。私が持っているクラスではUITableViewカスタムセルIBOutletsはnilです

static NSString *CellIdentifier = @"ChatCell"; 
ChatCustomCell *cell = (ChatCustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

xibファイル私はUITableViewCellを追加し、それを識別子「ChatCell」とを与えているに

は、私のクラスで私はこのようなこのカスタムセルを使用しようとしていますIBOutletUIlabelを提供し、xibで作成したUILabelのいずれかに接続しましたが、いつでもセルが作成されると、UILabelnilのままです。

どうしてですか?

+0

nibファイルをViewControllerに登録しましたか? – NSNoob

+0

いいえ私はそうではなかったが、私は –

+0

を書く必要はないと考えています。プロトタイプセルを作成するためにストーリーボードを使用している場合は、nibを登録する必要はありません。 –

答えて

3

まず、カスタムXibファイルをViewControllerに登録する必要があります。 Apple Docs on registerClass:forCellReuseIdentifier:から

呼び出し、このメソッドまたはregisterClass:forCellReuseIdentifier:メソッド は新しい細胞を作成する方法をテーブルビューを指示します。 のタイプのセルが現在再利用キューにない場合、テーブルビューは提供された情報を で自動的に新しいセルオブジェクトを作成します。

など。 tableViewデリゲートとデータソースを設定した後、あなたのviewDidLoadにこの行を書く:

[yourTableView registerNib:[UINib nibWithNibName:@"ChatCustomCell" bundle:nil] forCellReuseIdentifier:@"ChatCell"]; 

そうでない場合は、あなたのテーブルビューは、CellのゼロIBOutletsにつながるセルnibファイルをロードすることはできません。

+0

この作品をありがとうございました。これも前に試していましたが、どこかで間違っていた可能性があります。 –

+0

@Avinash:セルの再利用のために[tableView dequeueReusableCellWithIdentifier:forIndexPath:]を使用してください。これは、セルの無帰還ではない新しいAPIです。 – kaushal

3

あなたのxibセルには、あなたのセルのためにnilが返される場合があります。このコードを書くと役立ちます。

ChatCustomCell *cell = (ChatCustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier] 

if (cell == nil) 
{ 
    NSArray *nibArray = [[NSBundle mainBundle] loadNibNamed:@"nibName" owner:self options:nil]; 
    cell = [nibArray objectAtIndex:0]; 
} 
関連する問題