Conozco este problema mencionado anteriormente, pero las resoluciones no se aplicaron. Tengo un UINavigationController con un UITableViewController integrado configurado usando IB. En IB, el delegado de UITableView y dataSource están configurados para mi derivación de UITableViewController. Esta clase se ha agregado usando las plantillas de XCode para las clases UITableViewController. No existe una UITableViewCell personalizada y la vista de tabla usa solo estilo simple con solo título.iPhone: didSelectRowAtIndexPath no invocado
Bueno, en el simulador la lista se representa correctamente, con dos elementos proporcionados por dataSource, por lo que dataSource está vinculado correctamente. Si elimino el enlace de salida para dataSource en IB, en su lugar se muestra una tabla vacía.
Tan pronto como toco uno de estos dos elementos, parpadea en azul y el GDB encuentra una interrupción en __forwarding__
en el alcance de UITableView::_selectRowAtIndexPath
. No está llegando al punto de interrupción establecido en mi método no vacío didSelectRowIndexPath. Verifiqué los argumentos y el nombre del método para excluir los errores tipográficos que resultan en un selector diferente.
Recientemente no he podido determinar si delegate está configurado correctamente, pero como está configurado de manera equivalente a dataSource que está obteniendo dos elementos de la misma clase, espero que esté configurado correctamente. ¿Así que qué hay de malo?
Estoy ejecutando iPhone/iPad SDK 3.1.2 ... pero probé con el iPhone SDK 3.1 en el simulador también.
EDIT: Este es el código de mi derivación UITableViewController:
#import "LocalBrowserListController.h"
#import "InstrumentDescriptor.h"
@implementation LocalBrowserListController
- (void)viewDidLoad {
[super viewDidLoad];
[self listLocalInstruments];
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
- (void)viewDidUnload {
[super viewDidUnload];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [entries count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
if (([entries count] > 0) && ([indexPath length] > 0))
cell.textLabel.text = [[[entries objectAtIndex:[indexPath indexAtPosition:[indexPath length] - 1]] label] retain];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (([entries count] > 0) && ([indexPath length] > 0))
{
...
}
}
- (void)dealloc {
[super dealloc];
}
- (void) listLocalInstruments {
NSMutableArray *result = [NSMutableArray arrayWithCapacity:10];
[result addObject:[InstrumentDescriptor descriptorOn:[[NSBundle mainBundle] pathForResource:@"example" ofType:@"idl"] withLabel:@"Default 1"]];
[result addObject:[InstrumentDescriptor descriptorOn:[[NSBundle mainBundle] pathForResource:@"example" ofType:@"xml"] withLabel:@"Default 2"]];
[entries release];
entries = [[NSArray alloc] initWithArray:result];
}
@end
Posible duplicado de [Seleccionar fila de vista de tabla mediante programación] (http://stackoverflow.com/questions/2035061/select-tableview-row-programmatically) – jk2K