Прошло много исследований о моей проблеме, прежде чем принимать решение о вашей помощи. Надеюсь, что вы будете в состоянии помочьTableView в TableViewController, перезагрузка данных и indexPathForSelectedRow не работают
У меня есть tableView
внутри ViewController
и я не могу перезагрузить данные
[[self.tableView indexPathForSelectedRow]row]
всегда возвращает 0
я вещь две проблемы связаны между собой, я просто не знаю почему. Вот мой код:
.h
файл
@interface IITableViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
@property (strong, nonatomic) UIView *blackView;
@property (strong, nonatomic) IBOutlet UITableView *tableView;
@end
blackView
является причиной, почему я выбрал ViewController
вместо TableViewController
, тем больше вы перечисляете, тем темнее она становится.
Это как моя раскадровка установлен: «Вид» связан с моей blackView
и «Table View» к моим tableView
, мой blackView
находится позади tableView
.
Вот остальная часть кода:
viewWillApear
[super viewWillAppear:animated];
[self.tableView reloadData];
...
numberOfSectionsInTableView
return 2;
numberOfRowsInSection
if (section==0) {
return 1;
}
else {
return self.dreams.count;
}
cellForRowAtIndexPath
if (indexPath.section == 0) {
IIEntryCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TitleCell" forIndexPath:indexPath];
...
return cell;
}
else {
IIEntryCell *cell = [tableView dequeueReusableCellWithIdentifier:@"EveryCell" forIndexPath:indexPath];
...
NSLog(@"%ld", (long)[indexPath row]);
return cell;
}
Все хорошо отображено, мой NSLog возвращает правый номер ячейки.
prepareForSegue
if ([segue.identifier isEqualToString:@"showDetails"]) {
IIDetailViewController *detailViewController = [segue destinationViewController];
detailViewController.dreamEntry = [self.dreams objectAtIndex:[self.tableView indexPathForSelectedRow].row];
NSLog(@"%ld",(long)[[self.tableView indexPathForSelectedRow]row]);
[self.tableView reloadData];
}
self.dreams
является NSArray
, где мои данные хранятся
Дело в том, что здесь NSLog
всегда возвращает 0
И когда я вернусь на этот View Controller
мой данные не перезагружаются (несмотря на изменения, внесенные в источник данных, который, кстати, является Sqlite, я должны восстановить приложение для изменения отображались правильно)
Мой переход срабатывает в CellForRowAtIndexPath
[self performSegueWithIdentifier:@"showDetails" sender:self];
Похоже, что свойство 'tableView' на вашем контроллере равно нулю. Вы не забыли подключить настольный вид к этой розетке в своем раскадровке? – Jonah
Я почти shure, плюс, если я добавлю 'NSLog (@"% @ ", self.tableView);' Я получаю это; layer = ; contentOffset: {0, 0}> –
Как вы вызываете segue? Из 'didSelectRowAtIndexPath'? Если да, можете ли вы показать этот метод. Вероятно, выбранная строка была очищена, так как вы получаете 0 – Paulw11