2012-03-10 24 views
6

Siento que este es un problema que requiere atención especial ... mi Google-fu es bastante bueno pero no he podido obtener nada útil.Error de aserción para UITableView selectRowAtIndexPath

Esto es lo más simple y, sin embargo, parece que no puedo entender cuál es el problema.

Tengo un UITableView. Es una subvista que mi VC llama _form. Lo estoy usando para diseñar, no para mostrar datos. Tiene 2 celdas

En cierto caso, estoy intentando seleccionar una celda diferente, usando selectRowAtIndexPath: animated: scrollPosition.

Cuando hago esto, es SIGABRTS.

Un ejemplo sencillo:

- (IBAction)submitClicked:(id)sender 
{ 
    [_submit setTitle:@"Wha!?" forState:UIControlStateNormal]; 
    NSIndexPath *row = [NSIndexPath indexPathWithIndex:0]; 
    NSLog(@"%d", [[_form indexPathForSelectedRow] row]); 
    [_form selectRowAtIndexPath:row animated:YES scrollPosition:YES]; 
} 

título del botón se cambió, y las impresiones de la tabla que la fila seleccionada es 0 ó 1, pero en tratar de seleccionar la celda deseada, se rompe:

2012-03-09 21:57:39.905 <omitted>[16329:207] 0 
2012-03-09 21:57:39.908 <omitted>[16329:207] *** Assertion failure in -[NSIndexPath row], /SourceCache/UIKit_Sim/UIKit-1912.3/UITableViewSupport.m:2598 
(gdb) 

Mi suposición es que esto implica que algo está mal con la configuración de mi tabla, pero no estoy seguro de qué. La selección de las celdas de la tabla normalmente (haciendo clic en ella) está funcionando, como lo indica la respuesta esperada en mi tableView: didSelectRowAtIndexPath. Todo lo demás funciona bien con la forma en que tengo esta configuración, excepto esto.

(También, otras personas respondiendo con información de depuración adicional, no sólo "(BGF)". ¿Cómo puedo conseguir esto?)

Gracias!

Respuesta

18

Un índice de una celda de vista de tabla necesita tener una fila y una sección. Trate de crear su ruta del índice utilizando el método de fábrica (que se define en NSIndexPath UIKit Additions) esta forma:

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0]; 
[_form selectRowAtIndexPath:indexPath animated:YES scrollPosition:YES]; 
+0

Gracias, ¡eso es frustrante. Eso es lo que obtengo por confiar demasiado en lo que me dice la sugerencia del código. Nunca sugirió eso. > :-( – Liandri

Cuestiones relacionadas