为什么“[self.tableView reloadData]”不能确保我看到刚刚添加到 UITableView 的数据的最新行?(包括代码)这是在从 AddItem 控制器返回到这个委托方法之后我:
- 使用新值更新核心数据存储库
- 调用:“[self.tableView reloadData]”
- 关闭模态视图
- 但是然后回到 UITableView 新行不存在吗?
- 当我在模拟器中停止并重新启动 iPhone 应用程序时,该行确实显示正确
为什么“reloadData”在这里对我不起作用,我该怎么办?
注意我知道有一种方法可以通过表格视图中的“insertRowsAtIndexPaths”手动创建一个新行。不确定哪种方法最好,但无论如何都想了解为什么 reloadData 在这里不起作用。
代码:
- (void)newItemController:(NewItemController *)controller didFinishWithSave:(BOOL)save newItemText:(NSString*)itemText
{
// Add data to CoreData store
WEView *newWEView = (WEView *) [NSEntityDescription insertNewObjectForEntityForName:@"WEView" inManagedObjectContext:managedObjectContext];
newWEView.title = itemText;
NSError *error = nil;
if (![managedObjectContext save:&error]) {
// Handle the error.
DLog(@"ERROR DURING SAVE");
abort();
}
// Dismiss the modal view to return to the main list
[self dismissModalViewControllerAnimated:YES];
// Reload Data
[self.tableView reloadData];
}
谢谢
PS。这是我用来填充 tableview 数据实例变量的代码:
- (void)updateTableDataViaCoreData
{
// Core Data Request
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"WEView" inManagedObjectContext:managedObjectContext];
[request setEntity:entity];
// CoreData Sort Descriptor
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"title" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];
[sortDescriptors release];
[sortDescriptor release];
// Core Data - Execute Request
NSError *error = nil;
NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
if (mutableFetchResults == nil) {
// Handle the error.
DLog(@"Error when fetching data");
abort();
}
// Core Data finish Up
[self setViewConfigArray:mutableFetchResults];
[mutableFetchResults release];
[request release];
}