2014-02-20 2 views
2

У меня есть XIB, в котором есть куча просмотров (iPad). Одним из видов является UITableView. Делегат был назначен через IB. При запуске приложения cellForRowAtIndex не вызывается. По сути, в этом файле также нет методов numberOfRowsInSection или numberOfSections. Существует только метод didSelectRowAtIndexPath.UITableView в xib не вызывает cellForRowAtIndex

Итак, я написал cellForRowAtIndex и вручную установил self.table.delegate = self.

Если я нажимаю на ячейку, выполняется didSelectRowAtIndexPath.

Я честно чувствую себя в затруднении? Как это может произойти?

ответ

5

Добавить:

self.table.dataSource = self;

cellForRowAtIndex является метод протокола DataSource, так что вы должны установить источник данных для себя, а для того, чтобы контроллер реагировать на протокол источника данных.


+2

Я лично сделал бы подключение в Interface Builder, но это тоже программно работает. – aapierce

+0

Он установлен в IB вместе с делегатом данных, но все еще не вызывается. – jdog

+0

Я снова установил источник данных. UITableViewDataSource теперь находится в файле .h. И все же cellForRowAtIndexPath НЕ вызывается. – jdog

1

Если этот контроллер является ничем иным, как UITableViewController, не забудьте добавить следующие строки в файле .h:

@interface myViewController: UIViewController <UITableViewDelegate, UITableViewDataSource> {} 
0

Я не уверен, что является причиной этой проблемы, однако легко исправить, что в вашем методе -(void)viewDidLoad вы могли бы назвать [self.table reloadData], который заставляет его вручную вызвать все функции

Somethign остальное, что произошло со мной в том, что вы сказали «numberOfRowsInSection или NumberOfSections не реализован» ... Те, методы требуются для представления таблицы, и oyu обязательно должен их реализовать. Это очень хорошо может быть проблема

0

В вашем .h вам нужно добавить Datasource и объявления делегата

@interface HDMainViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> 

и в вас .m файл, где вы создаете свой TableView вам необходимо установить

tableview.delegate = self; 
tableview.dataSource = self; 

Теперь ваши методы обработки данных и делегатов должны работать

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