2012-02-11 4 views
0

У меня возникла проблема с загрузкой содержимого таблицы в UITableViewController. Я создал UITableViewController без xib. В loadView Я вызываю функцию, которая генерирует массив данных для отображения. И из этого массива в tableView:cellForRowAtIndexPath: Я пытаюсь загрузить ячейки. Но почему-то я ничего не получаю на столе. Кроме того, когда я устанавливаю точку останова для вызова, он, похоже, не вызван. Может ли кто-нибудь сказать, что я делаю неправильно здесь?когда делает -tableView: cellForRowAtIndexPath: вызывается?

+1

Помогла бы небольшой код из метода 'loadView'. Кроме этого - после создания этого представления попробуйте вызвать 'reloadData' на вашей таблице. – Eimantas

+1

Вы возвращаете правильные значения из методов 'numberOfSectionsInTableView' и' numberOfRowsInSection: 'вашего делегата tableView? – jonkroll

+0

нет его нет. Я получаю 0 для количества строк. – slonkar

ответ

4

Вызывается, и строки для вашего табличного представления, так как по умолчанию они будут 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 вызывается при построении таблицы. Установили ли вы делегат таблицы? Вы добавили в свой .h?

+2

Это источник данных, который необходимо установить. Делегат отвечает за выбор строки, а не показывается. – Eimantas

+0

my .h - это что-то вроде этого classname: UITableViewController {} – slonkar

+0

Если вы создали подкласс 'UITableViewController', они делегируют и dataSource уже настроены правильно, просто убедитесь, что вы возвращаете правильное количество разделов и строк и называете' [self.tbleView reloadData]; 'при обновлении источника данных (добавить/удалить/изменить объекты в массиве). –

0

как сказал Eimantas, вы должны установить «DataSource» делегат вашего UITableView = (указывая на) YourClass с Tableview: метод cellForRowAtIndexPath ...

это метод вызывается всякий раз, новая ячейка (в первый раз, когда вы видите свою таблицу, он создает необходимое количество ячеек для покрытия всей высоты вашей таблицы), тогда он вызывается, когда пользователь просматривает таблицу (не создавать новые ячейки, а повторно использовать старые ячейки с необходимы новые данные)

Смежные вопросы