Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Программно запустить prepareForSegue

Автор вопроса: AndrewОтветов: 2

Я хочу запустить код в файле prepareForSegue. Проблема в том, что я меняю представления программно, поэтому функция prepareForSegue не запускается. Я также не знаю, как его запустить, потому что не могу дать ему идентификатор.

подготовка к переходу:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    NSLog(@"hi");
}

Код, который я пытался использовать для вызова функции вручную:

[self performSegueWithIdentifier:@"test" sender:self];

Код, который я использую для переключения между представлениями:

UIViewController *second = [self.storyboard instantiateViewControllerWithIdentifier:@"gameOverPage"];
[self presentViewController:second animated:YES completion:nil];

Я думаю, если бы я мог просто установить идентификатор для перехода, моя проблема была бы решена, но я не знаю, как это сделать.

xcodeiosobjective-csegue

Ответы

Ответ 1 · рейтинг 4 · Yaman

Если вы не используете Storyboard, вы не можете использовать методы, связанные с переходом. Вместо этого просто настройте свой контроллер, прежде чем представить его.

UIViewController *second = [self.storyboard instantiateViewControllerWithIdentifier:@"gameOverPage"];
// configure your controller
second.propertyA = value;
[self presentViewController:second animated:YES completion:nil];

Ответ 2 · LukeSideWalker

Вы можете установить идентификатор для перехода в раскадровке: просто нажмите на переход и выберите инспектор атрибутов (справа от Xcode), там вы найдете текстовое поле "Идентификатор". Далее вы можете поставить свое индивидуальное имя идентификатора.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы