2012-02-11 14 views
0

UITableViewControllerにテーブルのコンテンツを読み込む際にこの問題が発生しています。私はUITableViewControllerをxibなしで作成しました。 loadViewでは、表示するデータの配列を生成する関数を呼び出しています。 tableView:cellForRowAtIndexPath:の配列から、私は細胞をロードしようとしています。しかし、どういうわけか私はテーブルの上に何も得ていない。それに加えて、コールについてブレークポイントを設定すると、呼び出されないようです。誰が私がここで間違っていると言うことができますか?when -tableView:cellForRowAtIndexPath:get called?

+1

'loadView'メソッドのコードが少し役に立ちます。それ以外は、一度そのビューを作成しておけば、テーブル上で 'reloadData'を呼び出してみてください。 – Eimantas

+1

あなたのtableViewデリゲートの 'numberOfSectionsInTableView'と' numberOfRowsInSection: 'メソッドから正しい値を返していますか? – jonkroll

+0

はありません。私は行の数が0になっています。 – slonkar

答えて

4

-tableView:cellForRowAtIndexPath:は、最初に画面にセルを塗りつぶしたとき、または新しいセルを画面にスクロールしたときに呼び出されますが、適切な数のセクションを返さなかった場合は呼び出されませんデフォルトでは0になっているため、テーブルビュー用の行があります。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return [yourArray count]; 
} 
+0

numberOfRowsInSectionが呼び出されると、配列が空であると思います。行数が呼び出される前に配列を構築するにはどうすればよいですか? – slonkar

+0

する必要はありません。配列が準備できたら '[self.tableView reloadData];を呼び出すだけです。 –

0

テーブル作成時にcellforrowatindexpathが呼び出されます。 テーブルの代理人をselfに設定しましたか? .hに追加しましたか?

+2

これは、設定が必要なデータソースです。デリゲートは行選択を行い、表示は行いません。 – Eimantas

+0

私の.hは次のようなものですclassname:UITableViewController {} – slonkar

+0

'UITableViewController'サブクラスを作成した場合、delegateとdataSourceはすでに正しく設定されています。セクションと行の正しい数を返すようにしてください。 [self.tbleView reloadData]; 'データソースを更新するとき(配列内のオブジェクトの追加/削除/変更)。 –

0

eimantasが言ったように、あなたがのtableViewとあなたのUITableView =(指して)YOURCLASSの「データソース」デリゲートを設定する必要があります:cellForRowAtIndexPathメソッドを...

それはいつでも新しいセルと呼ばれる方法です(テーブルを初めて見たときに、テーブルの高さ全体をカバーするために必要な数のセルが作成されます)、ユーザーがテーブルをスクロールするときに呼び出されます(新しいセルを作成するのではなく、新しいデータが必要です)