Я борюсь с методами datasource и делегата tableview. У меня есть табличное представление, если пользователь перейдет к этому контроллеру табличного представления. Я вызываю метод веб-службы, который является блочным сервисом после того, как запрос завершил успешную перезагрузку разделов таблицы, но tableView: cellForRowAtIndexPath: indexPath, вызываемый дважды. Вот мой код.UITableview делегат и источник данных, вызываемый дважды
viewDidLoad
[[NetworkManager sharedInstance].webService getValues:self.currentId completion:^(NSArray *result, BOOL handleError, NSError *error) {
self.data = result[0];
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadSections:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 4)] withRowAnimation:UITableViewRowAnimationAutomatic];
});
}
но значение cellForRowAtIndexPath self.data является недействительным в первый раз.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"%@", self.data); // first time it print null
}
Итак, есть ли идеи по этому поводу? Спасибо огромное!
Методы dataSource вашего 'UITableView' будут вызываться после того, как экран будет загружен в качестве предложенного @Kex, поэтому в первый раз это« null », и во второй раз перезагрузка данных будет вызвана изнутри вашего асинхронный блок. – Levi
попробуйте поместить код reloadSections чуть ниже self.data = result [0]; а не в блок отправки. – Kex
@ Kex Я старался изо всех сил. –