iphone - storyboards - storyboard xcode
IndexPath para segue de accessoryButton (2)
Estoy intentando usar un storyboard / segue para manejar la transición entre una UITableView con transición estándar y botón de divulgación de detalles. Después de leer algunas publicaciones diferentes aquí, configuré mi proyecto de esta manera:
- Ate la transición principal entre UITableViewCell y ViewController
- Ata el segue secundario del ViewController primario al nuevo ViewController
Implemente
accessoryButtonTappedForRowWithIndexPath
siguiente manera:-(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath { [self performSegueWithIdentifier:@"DetailSegue" sender:self]; }
Esto funciona muy bien y mi prepareForSegue: sender:
se llama como se esperaba. El problema es que necesito conocer indexPath para el elemento seleccionado. La transición de UITableViewCell recupera indexPath de esta manera:
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
Lamentablemente, cuando trato de hacer eso después de haber llamado el accessoryButton, devuelve null
.
La pregunta original de la que estoy basando parte de este código está aquí: botón de divulgación de detalles y segues
¿Hay algún método de tableView que devuelva indexPath para accessoryButtons? ¿Debo acceder al indexPath de alguna otra manera?
El argumento del sender
es, según la documentación:
El objeto que desea usar para iniciar la transición. Este objeto está disponible para fines informativos durante la transición real.
No veo ningún motivo por el que no pueda usar la ruta de índice como remitente en lugar de self
, luego acceda a la ruta de índice en prepareForSegue:
Si eso no funciona, almacene la ruta del índice en un ivar y acceda a eso en prepareForSegue
No tiene que anular el accessoryButtonTappedForRowWithIndexPath
.
En prepareForSegue
, cuando se trabaja con un botón de divulgación de detalles, en lugar de:
[self.tableView indexPathForSelectedRow]
utilizar:
[self.tableView indexPathForCell:sender]
El remitente ya es la celda del botón de divulgación de detalles.