2013-12-11 6 views
0

У меня есть UIViewController с одним UITableView в нем. В представлении таблицы есть список избранных, которые могут быть изменены другими частями приложения. Я использую NSNotificationCenter, чтобы вызвать метод reloadData таблицы. Вид таблица выход объявляется следующим образом:reloadData not triggering cellForRowAtIndexPath

@property (strong,nonatomic) IBOutlet UITableView *faveTableView; 

и синтезировали следующим образом:

@synthesize faveTableView; 

Делегат и DataSource свойства представления таблицы устанавливаются в viewDidLoad контроллера представления следующим образом:

[self.faveTableView setDataSource:self]; 
[self.faveTableView setDelegate:self]; 

NSNotificationCenter вызывает следующий метод пожара:

-(void)reloadNotificationReceived{ 
    [self loadData]; 
    [self.faveTableView reloadData]; 
} 

loadData обновляет источник данных, который является NSMutableArray управляемых объектов и работает должным образом.

При загрузке контроллера вида cellForRowAtIndexPath запускается, как и должно быть. Однако, когда уведомление получено, перезагружаетсяNotificationReceived, и два из методов делегирования представления таблицы (numberOfRowsInSection и numberOfSectionsInTableView) запускаются. Однако cellForRowAtIndexPath НЕ запускается. numberOfRowsInSection Возвращает правильное количество элементов.

Может ли кто-нибудь предложить причину, по которой cellForRowAtIndexPath не уволен здесь? Благодаря!

+1

Возможно, 'numberOfSectionsInTableView:' возвращает один, а 'numberOfRowsInSection:' возвращает ноль? – dasblinkenlight

+2

Вы уверены, что numberOfRowsInSection возвращает число больше 0? –

+1

Какое количество строк вы возвращаете? – Jeremy

ответ

0

Количество строк, которые возвращаются 0.

0

Возможно, вы установили делегат/источник данных о Tableview к контроллеру в раскадровку/XIb, но вы не подключены вверх «faveTableView» TableView IBOutlet контроллера ... Если задан параметр del/datasource, он будет успешно получать данные от контроллера, но без установленного IBOutlet, self.faveTableView останется нулевым и, следовательно, [self.faveTableView reloadData] ничего не сделает. Поместите контрольную точку в свой viewDidLoad и проверьте, не является ли self.faveTableView нолем ...

+0

Исправьте меня, если я ошибаюсь в этом, но если делегат/источник данных неправильно настроен, представление таблицы не будет загружать данные при начальной загрузке. Однако при загрузке представления изначально все работает – Pheepster

+0

Как я писал «вы установили делегат/источник данных» .. так что да, мы на одной странице .. то, что я говорю, возможно, это IBOutlet self.faveTableView hasn ' т. Также примечание: [self.faveTableView комплектDataSource: self]; [self.faveTableView setDelegate: self]; ничего не сделает, если IBOutlet не был подключен, поэтому я предположил, что делегат/источник данных был подключен из раскадровки/xib. – tjboneman

+0

Нет, я проверял, что они определенно подключены к сетке – Pheepster