У меня возникла проблема с загрузкой содержимого таблицы в UITableViewController
. Я создал UITableViewController
без xib. В loadView
Я вызываю функцию, которая генерирует массив данных для отображения. И из этого массива в tableView:cellForRowAtIndexPath:
Я пытаюсь загрузить ячейки. Но почему-то я ничего не получаю на столе. Кроме того, когда я устанавливаю точку останова для вызова, он, похоже, не вызван. Может ли кто-нибудь сказать, что я делаю неправильно здесь?когда делает -tableView: cellForRowAtIndexPath: вызывается?
ответ
Вызывается, и строки для вашего табличного представления, так как по умолчанию они будут 0.
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [yourArray count];
}
Я предполагаю, что мой массив пуст при вызове numberOfRowsInSection. Как я могу построить свой массив до того, как будет вызвано количество строк? – slonkar
Вам не нужно. Просто вызовите '[self.tableView reloadData];' когда массив готов. –
cellforrowatindexpath вызывается при построении таблицы. Установили ли вы делегат таблицы? Вы добавили в свой .h?
Это источник данных, который необходимо установить. Делегат отвечает за выбор строки, а не показывается. – Eimantas
my .h - это что-то вроде этого classname: UITableViewController {} – slonkar
Если вы создали подкласс 'UITableViewController', они делегируют и dataSource уже настроены правильно, просто убедитесь, что вы возвращаете правильное количество разделов и строк и называете' [self.tbleView reloadData]; 'при обновлении источника данных (добавить/удалить/изменить объекты в массиве). –
как сказал Eimantas, вы должны установить «DataSource» делегат вашего UITableView = (указывая на) YourClass с Tableview: метод cellForRowAtIndexPath ...
это метод вызывается всякий раз, новая ячейка (в первый раз, когда вы видите свою таблицу, он создает необходимое количество ячеек для покрытия всей высоты вашей таблицы), тогда он вызывается, когда пользователь просматривает таблицу (не создавать новые ячейки, а повторно использовать старые ячейки с необходимы новые данные)
Помогла бы небольшой код из метода 'loadView'. Кроме этого - после создания этого представления попробуйте вызвать 'reloadData' на вашей таблице. – Eimantas
Вы возвращаете правильные значения из методов 'numberOfSectionsInTableView' и' numberOfRowsInSection: 'вашего делегата tableView? – jonkroll
нет его нет. Я получаю 0 для количества строк. – slonkar