Je ne semble pas avoir ce SIGABRT que je reçois. J'ai cette application iOS de storyboard, et dans le storyboard j'ai un UITableViewController. Maintenant, je peux prendre une cellule de la TVC et la faire pousser sur le controller de vue "segue", mais si je devais arrêter l'action "segue" dans certaines conditions? Apparemment, vous ne pouvez pas, puisque la méthode prepareForSegue: sender: ne le permet pas, et il semble être le seul callback qui est appelé quand une transition est sur le point d'être effectuée.
J'ai donc deviné que je pourrais aller dans la tableView: didSelectRowAtIndexPath: et effectuer le segue par programmation. Sous-optimal, mais quand même …
Eh bien, il se trouve que j'ai mal deviné. Ou au less, je fais quelque chose de mal. La façon la plus évidente de le faire serait
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [self performSegueWithIdentifier:@"TheOtherIdentifier" sender:self]; }
mais l'application entière se bloque avec un SIGABRT, qui ne donne aucune information utile (et oui, je suis sûr que c'est cette ligne qui fait planter l'application, j'ai vérifié avec le débogueur 🙂 De plus, le VC que j'essaye de charger a l'identifiant correctement défini, car le code suivant
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { UIViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"TheOtherIdentifier"]; [self.navigationController pushViewController:vc animated:YES]; }
"travaux". Les guillemets indiquent que ce n'est clairement pas la façon dont une telle transition devrait être effectuée.
Maintenant: des idées?
Essaye ça: