我有一个简单的 TODO 列表,其中有:
reloadTableViewWhenItChanges
;停止/运行编译器后重新加载 TableView 。
但是我需要在 viewDidLoad
中重新加载 TableView (而不是在 viewWillAppear
/viewDidAppear
中),只有在 中的某些内容发生更改后才使用委托(delegate)表重新加载>managedObjectContext
.
我该怎么做?
这是我的代码(其中有什么问题?例如,我必须将 [self.tableView reloadData]
放在哪里?):
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"Note List";
self.barButtonAddNote = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
target:self
actionselector(addNewNote];
[self.navigationItem setRightBarButtonItem:self.barButtonAddNote animated:YES];
[self reloadTableViewWhenItChanges]; }
- (void)reloadTableViewWhenItChanges // protocol's method {
self.addNoteViewController.delegate = self;
if ([self.managedObjectContext hasChanges])
{
NSError *error;
[self.managedObjectContext save:&error];
}
[self fetchData];
[self.tableView reloadData]; }
- (void)fetchData {
NSFetchRequest *request = [[NSFetchRequest alloc]init];
NSEntityDescription *note = [NSEntityDescription entityForName"Note"
inManagedObjectContext:self.managedObjectContext];
[request setEntity:note];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey"task" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];
NSError *error = nil;
NSArray *mutableFetchResults = [self.managedObjectContext executeFetchRequest:request error:&error];
if (mutableFetchResults != nil){
self.notesArray = [[NSMutableArray alloc] initWithArray:mutableFetchResults];
} }
正如@eik_cloner 所说,您不需要在viewDidLoad
中重新加载 TableView ,因为它是自动完成的。
如果您想手动执行此操作,则必须在您想要的任何地方调用 UITableView
的 reloadData
方法:
[yourTableView reloadData];
关于ios - 如何使用委托(delegate)在 viewDidLoad 中重新加载 tableview?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44138928/
欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://jike.in/) | Powered by Discuz! X3.4 |