我只有TODO列表,其中有:
reloadTableViewWhenItChanges
; 表视图在停止/运行编译器后重新加载。
但是我需要在viewDidLoad
中重新加载表格视图(不在viewWillAppear
/ viewDidAppear
中),只有在managedObjectContext
中发生变化后才使用委托表重新加载。
我该怎么做?
这是我的代码(它有什么问题?例如,我在哪里将[self.tableView reloadData]
放在我的代码中?):
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"Note List";
self.barButtonAddNote = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
target:self
action:@selector(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];
} }
答案 0 :(得分:2)
如@eik_cloner所述,您无需在viewDidLoad
中重新加载表格视图,因为它是自动完成的。
如果您想手动执行此操作,则必须在reloadData
UITableView
方向调用{...}}方法:
[yourTableView reloadData];
答案 1 :(得分:0)
在目标C中: -
[tableViewName reloadData];
在斯威夫特: -
tableViewName.reloadData()
确保通过UIStoryboard或按代码使用UIViewController配置代理。