У меня проблема в моем приложении. Любая помощь будет оценена. По сути, это переход от вида А к виду Б, а затем возврат из вида Б.
В представлении 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];
}
Правильно ли я поступаю? Или есть что-то, что я пропустил?