Почему "[self.tableView reloadData]" не гарантирует, что я вижу последнюю строку для данных, которые я только что добавил в UITableView? (включенный код) То есть после возврата из контроллера AddItem к этому методу делегата I:
- обновить репозиторий основных данных новым значением
- вызов: "[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. Это код, который я использую для заполнения переменной экземпляра таблицы данных:
- (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];
}