Parece que no obtengo este SIGABRT que sigo recibiendo. Tengo esta aplicación de storyboard para iOS, y en el guión gráfico tengo un UITableViewController. Ahora, puedo tomar una celda del TVC y hacer que presione el controlador de vista "segue", pero ¿qué sucede si necesito detener la acción de "segue" en ciertas condiciones? Aparentemente no se puede, ya que el método prepareForSegue: sender: no lo permite, y parece ser la única devolución de llamada que se llama cuando se está por realizar una transición.performSegueWithIdentifier vs instantiateViewControllerWithIdentifier
Así que supuse que podría entrar en la tablaView: didSelectRowAtIndexPath: y realizar el cambio programáticamente. Suboptimal, pero aún ...
Bueno, resulta que adiviné mal. O al menos, estoy haciendo algo mal. La manera más obvia de hacerlo sería
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self performSegueWithIdentifier:@"TheOtherIdentifier" sender:self];
}
pero toda la aplicación se bloquea con un SIGABRT, que no da ninguna información útil (y sí, estoy seguro de que es esa línea que hace que el accidente aplicación, lo comprobado con el depurador :) Por otra parte, la VC estoy intentando cargar tiene el identificador configurado correctamente, ya que el siguiente código
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UIViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"TheOtherIdentifier"];
[self.navigationController pushViewController:vc animated:YES];
}
"funciona". Las comillas indican que claramente esta no es la forma en que debe realizarse dicha transición.
Ahora: ideas?
Para ser claros, dijiste que estableces este identificador para el controlador de vista de destino. ¿Pero estableciste un identificador para el segue en sí? Ese es el identificador que necesita usar en el primer caso. –
Ok, me estaba perdiendo eso. Consulte la respuesta de T.J. para más comentarios. – Morpheu5