У меня проблема в моем приложении. Любая помощь будет оценена. В основном это из вида A, чтобы просмотреть B, а затем вернуться из вида B.Обновить данные из табличного представления после возврата с другого вида
В представлении A он имеет динамические данные, загруженные из базы данных, и отображает их на виде таблицы. На этой странице также есть кнопка редактирования, а не на панели навигации. Когда пользователь нажимает кнопку редактирования, он переходит к представлению B, в котором отображается вид выбора. И пользователь может внести любые изменения здесь. После того, как это будет сделано, пользователь закроет кнопку «Назад» на панели навигации, сохранит изменения в NSUserDefaults, вернется к виду A, просмотрев вид B.
Возвращаясь к просмотру A, он должен получить новые данные из UIUserDefaults, и это произошло. Я использовал NSLog для печати на консоли, и он отображает правильные данные. Также он должен вызывать метод viewWillAppear: для получения новых данных для представления таблицы, но это не так. Он даже не вызывал метод tableView: numberOfRowsInSection:. Я разместил инструкцию NSLog внутри этого метода, но не распечатал ее в консоли.
В результате вид A все еще имеет старые данные. единственный способ получить новые данные в представлении A - это остановить и запустить приложение.
Оба вида A и вид B являются подклассом UIViewController
, с UITableViewDelegate
и UITableViewDataSource
.
Вот мой код в виде А:
- (void)viewWillAppear:(BOOL)animated {
NSLog(@"enter in Schedule2ViewController ...");
// load in data from database, and store into NSArray object
//[self.theTableView reloadData];
[self.theTableView setNeedsDisplay];
//[self.theTableView setNeedsLayout];
}
В данном случае «theTableView» является переменной UITableView. И я пробовал все три случая «reloadData», «setNeedsDisplay» и «setNeedsLayout», но, похоже, не работал.
В представлении B здесь приведен метод, соответствующий кнопке «Назад» на панели навигации.
- (void)viewDidLoad {
UIBarButtonItem *saveButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(savePreference)];
self.navigationItem.leftBarButtonItem = saveButton;
[saveButton release];
}
- (IBAction) savePreference {
NSLog(@"save preference.");
// save data into the NSUSerDefaults
[self.navigationController popViewControllerAnimated:YES];
}
Я делаю это правильно? Или есть что-то, что я пропустил?