2010-05-26 20 views
5

estoy tratando de desplazarse mi tableview a la segunda celda:UITableView no se desplaza a la celda

[self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:0] 
            atScrollPosition:UITableViewScrollPositionNone 
              animated:NO]; 

me sale el error:

*** Terminating app due to uncaught exception 'NSRangeException', reason: '-[UITableView scrollToRowAtIndexPath:atScrollPosition:animated:]: section (1) beyond bounds (0). 

'

Mi tableview tiene 30 células que están apareciendo sin secciones.

+0

Muestre su código para 'numberOfSectionsInTableView:' –

Respuesta

3

Si no tiene secciones, entonces usted puede probar el constructor indexPathWithIndex: clase:

[self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathWithIndex:1] 
         atScrollPosition:UITableViewScrollPositionNone 
           animated:NO]; 
+0

Esa llamada está en desuso en 4.0. Sé que no podemos discutirlo, entonces, sin romper la NDA, ¿cómo puedo especificar una sección si no tengo ninguna? –

+0

@Sheehan: No puedo ver la advertencia de desactivación en XCode, en los encabezados o en la documentación. ¿Estás seguro de que la llamada está en desuso? –

+1

Lo siento, estoy equivocado, no está en desuso. Obtuve este error: *** Aplicación de terminación debido a excepción no detectada 'NSInternalInconsistencyException', razón: 'Ruta de índice no válida para uso con UITableView. Las rutas de índice pasadas a la vista de tabla deben contener exactamente dos índices que especifiquen la sección y la fila. Utilice la categoría en NSIndexPath en UITableView.h si es posible. ' –

0

recomiendo crear una sección para almacenar sus células en esta sección puede tener ninguna cabecera de modo que no es visualmente distinguibles. , y lo que esto te beneficia es la capacidad de no tener que luchar contra las vías API previstas.

10

Cuando me dieron el mismo mensaje de error con una tabla de una sección, me fijo mediante la creación de un NSIndexPath tanto con una fila y en la sección:

NSIndexPath *ip = [NSIndexPath indexPathForRow:itemCurrentlyPlaying inSection:0]; 

No es fácil de encontrar, pero el constructor de conveniencia relevante está documentado aquí:

http://developer.apple.com/iphone/library/documentation/UIKit/Reference/NSIndexPath_UIKitAdditions/Reference/Reference.html

2

Como pollyp, yo era capaz de utilizar indexPathForRow:inSection:. Estoy llamando desde mi viewWillAppear:.

Parece que su mensaje de error dice que no hay ni siquiera una sección. ¿Está llamando al scrollToRowAtIndexPath:atScrollPosition:animated: antes de que se carguen los datos de la tabla (por ejemplo, en viewDidLoad)? Intente llamarlo más tarde, en viewWillAppear:.

Cuestiones relacionadas