Tengo splitViewController que tiene como MasterViewController algunos viewController y como DetailViewController algunos tableViewController. Cuando pulso un botón en masterViewController, quiero mostrar new tableViewController en detailViewController en lugar de uno existente.UITableView reloadData - cellForRowAtIndexPath no activado
así lo hice así:
SearchDetailViewController *searchDetailViewController = [[SearchDetailViewController alloc] initWithStyle:UITableViewStylePlain];
UINavigationController *searchDetailNavigationController = [[UINavigationController alloc] initWithRootViewController:searchDetailViewController];
Después de que yo estoy pasando los datos a mostrar en la nueva tableController:
[searchDetailViewController passInSearchResults:listOfItems];
Después de que "empujar" a nuevos controladores splitViewController:
[searchSplitViewController setViewControllers:[NSArray arrayWithObjects:self.navigationController, searchDetailNavigationController, nil]];
En el método tableViewController de destino se pasan los datos "passInSearchResults" y también llamo reloadDa ejército de reserva. Método parece que:
- (void)passInSearchResults:(NSMutableDictionary *)searchResults {
self.searchResultList = searchResults;
NSLog(@"Data is passed in: %@",self.searchResultList);
[self.tableView reloadData];
//[self.tableView setNeedsDisplay];
}
consola: Los datos se pasan en: [Aquí tengo los datos exactos que quiero y parece apenas a la derecha].
After this I see that method "numberOfRowsInSection" is fired:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSLog(@"Setting table length: %i",[self.searchResultList count]);
return [self.searchResultList count];
}
Consola: Ajuste de la longitud tabla: [aquí llego longitud adecuada]
El problema es que la tabla no se llena con datos pasados y método "cellForRowAtIndexPath" no se llama.
¿Cómo puede ser que en el método reloadData "numberOfRowsInSection" se active pero no el método "cellForRowAtIndexPath" ... ???
Gracias
No es necesario comprobar primero que se está ejecutando en el hilo principal. 'performSelectorOnMainThread' funciona, incluso cuando ya está en el hilo principal, al igual que' dispatch_async (dispatch_get_main_queue() '(que probablemente sea lo que realmente quiere aquí). Agregar el' if' aquí solo consume ciclos de procesador innecesarios. –