Ответ 1
Если вы хотите программно вызвать push-сег, вы даете segue "идентификатор раскадровки" в Interface Builder, а затем вы можете:
[self performSegueWithIdentifier:"pushToMyVC" sender:self];
В качестве альтернативы, если вы не хотите выполнять segue, вы можете создать экземпляр контроллера представления назначения, а затем вручную нажать на этот контроллер представления. Все, что вам нужно сделать, это убедиться, что контроллер представления назначения имеет свой собственный "идентификатор раскадровки" в Interface Builder, затем вы можете:
UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"DestinationController"];
[self.navigationController pushViewController:controller animated:YES];
Вы сказали "толчок" (и, следовательно, я использовал pushViewController
выше). Если вы действительно хотели "представить контроллер модального представления", то вторая строка:
[self presentViewController:controller animated:YES completion:nil];
Как вы можете видеть, вам не нужно использовать prepareForSegue
для перехода к новой сцене. Вы используете только prepareForSegue
, если хотите передать информацию контроллеру назначения. В противном случае это не нужно.
Ясно, что если вы не используете раскадровки (например, вы используете NIB), то процесс полностью отличается. Но я предполагаю, что вы не используете NIB, потому что prepareForSegue
не применимо в этой среде. Но если вы используете NIB, это будет следующим:
SecondViewController *controller = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
[self.navigationController pushViewController:controller animated:YES];