2011-01-27 8 views
1

iOSで単純なアプリケーションを作成していますが、「UITableView dataSourceがtableView:cellForRowAtIndexPath:」からセルを返す必要があります。静的な行コンテンツを作成しようとしています。UITableViewデータソースはセルを返す必要があります。なぜセルがnilであるのかわかりません。

My view controllerは、"StartViewController"と呼ばれます。 .xibファイルには、UITableViewCellobjectsという名前の"Section 0 Cell", "Section 1 Cell" and "Section 2 Cell"があります。これらのファイルは、.hファイルで次のように定義されています。

@interface StartViewController : UITableViewController 
{ 
UITableViewCell *cell0; 
UITableViewCell *cell1; 
UITableViewCell *cell2; 
} 
@property (nonatomic, retain) IBOutlet UITableViewCell *cell0; 
@property (nonatomic, retain) IBOutlet UITableViewCell *cell1; 
@property (nonatomic, retain) IBOutlet UITableViewCell *cell2; 

.mで指定されています。私はインターフェイスビルダーの写真を投稿することはできません。私はまだ評判がありません10。

- (UITableViewCell *)tableView:(UITableView *)tableView 
cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
NSLog(@"Processing section: %d, row: %d",[indexPath section], [indexPath row]); 

if (cell0 == nil) 
    NSLog(@"cell0 is nil"); 

if (([indexPath section] == 0) && ([indexPath row] == 0)) 
    return cell0; 

if (([indexPath section] == 1) && ([indexPath row] == 0)) 
    return cell1; 

if (([indexPath section] == 2) && ([indexPath row] == 0)) 
    return cell2; 

return cell0; 
} 

が、私は問題はCELL0がnilである知っているが、私は理由を理解することはできません。

細胞は、このように移入されます。

答えて

0

まだ設定していないので、nilです。オブジェクトの宣言と合成では、オブジェクトの割り当て/初期化は行われません。あなたが好きな何かをする必要が

:変数の合成

if (cell0 == nil) { 
    cell0 = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; 
    } 
+0

doh!私は以前にそれを指摘してくれてありがとうございました。 – hydev

+0

私はちょうどあなたが言っていることをやったことがあります、それは、セルのインスタンスを作成しますが、私はxibで設計/作成したセルではありません。そのちょうど空のセル。どのように使用するように指示しますか? UITTableviewCellに割り当てる必要はありませんか?私が整数を宣言しているという類推は、今ではその値を代入する必要があります。この場合、私はそれに設計されたUITableViewCellを割り当てる必要があります。 – hydev

+0

IBでセルを作成してプロジェクトにリンクしている場合は、 'cell0 = ...'の代わりに 'customCell'と呼んで、' cell0'を 'customCell'を使うように設定してください。このSOの記事から:http://stackoverflow.com/questions/1173584/custom-cell-from-nib-uitableview – aqua

0

はちょうどそれのためのget/setメソッドを生成し、それが実際にオブジェクトを初期化するために変数に何もしていません。それでもあなた自身のコードでそれを行う必要があります。実際には変数は必要ありません。

関連する問題