Jeśli chcesz programowo wywołać segue Push, dać Segue się „id” storyboard interfejs Builder, a następnie można:
[self performSegueWithIdentifier:"pushToMyVC" sender:self];
Ewentualnie, jeśli nie chcesz, aby wykonać segue , można utworzyć instancję docelowego kontrolera widoku, a następnie ręcznie przesłać do tego kontrolera widoku. Wszystko, co musisz zrobić, to upewnić się, że kontroler widok docelowy ma swój własny „id storyboard” Interface Builder, a następnie można:
UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"DestinationController"];
[self.navigationController pushViewController:controller animated:YES];
Mówiłeś „push” (a więc użyłem pushViewController
powyżej). Jeśli naprawdę oznaczało by „przedstawić kontroler modalne widoku”, a następnie, że druga linia jest:
[self presentViewController:controller animated:YES completion:nil];
Jak widać, nie zrobić mieć używać prepareForSegue
pchnąć do nowej sceny. Używasz tylko prepareForSegue
, jeśli chcesz przekazać informacje do kontrolera widoku docelowego. W przeciwnym razie nie jest to konieczne.
Oczywiście, jeśli nie używasz scenorysów (np. Używasz NIB-ów), proces jest zupełnie inny. Ale zakładam, że nie używasz NIB, ponieważ prepareForSegue
nie ma zastosowania w tym środowisku. Ale jeśli uzywasz NIB, byłoby to w następujący sposób:
SecondViewController *controller = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
[self.navigationController pushViewController:controller animated:YES];
Ta odpowiedź jest bardzo przydatna! – Plagorn