У меня проблема с приложением. Любая помощь будет оценена. В основном это из вида A в вид B, а затем вернуться из вида B.
В представлении A динамические данные загружаются из базы данных и отображаются в табличном представлении. На этой странице также есть кнопка редактирования, а не на панели навигации. Когда пользователь нажимает кнопку редактирования, он переходит к представлению B, которое показывает представление выбора. И пользователь может вносить любые изменения здесь. Как только это будет сделано, пользователь нажимает кнопку «Назад» на панели навигации, он сохраняет изменения в NSUserDefaults, возвращается к представлению A, открывая представление B.
Возвращаясь к представлению A, он должен получить новые данные из UIUserDefaults, и он это сделал. Я использовал NSLog для распечатки на консоль, и она показывает правильные данные. Также он должен вызвать viewWillAppear: метод, чтобы получить новые данные для табличного представления, но это не так. Он даже не вызывал tableView: numberOfRowsInSection: метод. Я поместил оператор NSLog внутри этого метода, но не выводил его на консоль.
В результате у представления A все еще есть старые данные. единственный способ получить новые данные в представлении A - это остановить и запустить приложение.
И вид A, и вид B являются подклассом UIViewController
, с UITableViewDelegate
и UITableViewDataSource
.
Вот мой код в представлении A:
- (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];
}
Я поступаю правильно? Или я что-то пропустил?