Se si vuole invocare a livello di codice un segue spinta, si darà la segue un "id storyboard" in Interface Builder e quindi è possibile:
[self performSegueWithIdentifier:"pushToMyVC" sender:self];
In alternativa, se non si desidera eseguire la segue , è possibile creare un'istanza del controller della vista di destinazione e quindi premere manualmente sul controller della vista. Tutto quello che dovete fare è quello di fare in modo che il controller della vista di destinazione ha il suo "storyboard id" in Interface Builder, allora si può:
UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"DestinationController"];
[self.navigationController pushViewController:controller animated:YES];
lei ha detto "push" (e quindi ho usato pushViewController
sopra). Se si intende veramente per "presentare un controller di vista modale", quindi che la seconda linea è:
[self presentViewController:controller animated:YES completion:nil];
Come si può vedere, non lo fai hanno utilizzare prepareForSegue
spingere per nuova scena. Si utilizza prepareForSegue
solo se si desidera passare le informazioni al controller di visualizzazione di destinazione. Altrimenti non è necessario.
Chiaramente, se non stai usando gli storyboard (ad es. Stai usando NIB), il processo è completamente diverso. Ma presumo che tu non stia usando NIB perché prepareForSegue
non è applicabile in quell'ambiente. Ma se si sta utilizzando PUNTO, sarebbe la seguente:
SecondViewController *controller = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
[self.navigationController pushViewController:controller animated:YES];
Questa risposta è molto molto utile! – Plagorn