he intentado imprimir el número de filas y secciones eran en realidad en el tableView durante la actualización, que me hizo pensar, ¿cuántas secciones voy a volver en la vista de tabla método de fuente de datos ... y esto fue el culpable :
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 0;
}
Asegúrese de que usted está volviendo 1 y no 0.
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
al menos esta resuelto el problema para mí ...
ACTUALIZACIÓN:
estoy teniendo el mismo problema de nuevo después de que se trabaja desde hace un tiempo. He modificado la aplicación un poco. Mi primera vista es una vista de mesa y cuando haces clic en el botón más en la esquina superior derecha, obtienes otra tabla donde puedes ingresar información. Al hacer clic en hecho, la información se añade al modelo de datos básicos con este código:
- (IBAction)doneButtonPressed:(UIBarButtonItem *)sender
{
MoneyBadgeAppDelegate *appDelegate =
[[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context =
[appDelegate managedObjectContext];
NSManagedObject *newMoment;
newMoment = [NSEntityDescription
insertNewObjectForEntityForName:@"SpendingMoment"
inManagedObjectContext:context];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyyMMdd"];
NSDate *modifiedDate = [dateFormat dateFromString: self.dateTextField.text];
[newMoment setValue: modifiedDate forKey:@"date"];
[newMoment setValue: descTextField.text forKey:@"desc"];
[appDelegate.eventsArray insertObject:newMoment atIndex:0];
NSError *error;
[context save:&error];
[self dismissViewControllerAnimated:YES completion:nil];
}
Y confirmó que se incorporaron en el modelo de datos básicos con éxito mediante la impresión de que la consola lo siguiente en mi método viewDidAppear al regresar volver a la primera pantalla.
-(void)viewDidAppear:(BOOL)animated{
NSEntityDescription *entity = [NSEntityDescription entityForName:@"SpendingMoment"
inManagedObjectContext:self.managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:entity];
NSError *error;
NSArray *items = [self.managedObjectContext
executeFetchRequest:fetchRequest error:&error];
for (SpendingMoment *moment in items) {
NSLog(@"Date: %@, Desc: %@", [moment date], [moment desc]);
}
[self addEvent];
Y entonces mi método addEvent hace esto:
- (void)addEvent {
[self.tableScreen beginUpdates];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[self.tableScreen insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationFade];
[self.tableScreen reloadData];
[self.tableScreen endUpdates];
@try{
[self.tableScreen scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:YES];
}
@catch(NSException *exception){
}
}
Alguna idea de cuál es el problema esta vez ??? ¡Gracias!
yo ya hice eso .. [timeZoneNames InsertObject: @ "HOLA" atIndex: 0]; número de filas son siempre más que 1. Todavía me sale este error .. – insomiac
tipo de retorno de numberOfRowsInSection es [count timeZoneNames]; ¿Está bien utilizar insertRowsAtIndexPaths sin beginUpdates y endUpdates? De – insomiac
@Aby 'documentación -beginUpdates': "Llamar a este método si desea inserciones posteriores, eliminación y operaciones de selección (por ejemplo, cellForRowAtIndexPath: y indexPathsForVisibleRows) para ser animado al mismo tiempo." Se usa para agrupar varias operaciones de UI en una sola operación de UI: solo tienes una operación. –