我的应用程序出现问题。任何帮助将不胜感激。基本上它是从视图A到视图B,然后从视图B回来。从其他视图回来后从表视图重新加载数据
在视图A中,它具有从数据库中加载的动态数据,并显示在表视图上。在这个页面中,它也有编辑按钮,不在导航栏上。当用户选中编辑按钮时,它会转到显示选取视图的视图B.用户可以在这里进行任何更改。一旦完成,用户在导航栏上选中后退按钮,它将更改保存到NSUserDefaults中,通过弹出视图B返回到视图A.
当回到视图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];
}
我在做正确的方法吗?还是有什么我错过了?