Я работаю над проектом, в котором я вызываю несколько переходов вместо использования контроллеров навигации. Ранее в моем проекте я установил модальный переход и вызвал его из метода IBAction нескольких разных кнопок (я вызываю один и тот же переход с разных кнопок, поскольку я передаю строку вместе с переходом).
В моей раскадровке это выглядит так:
Затем в моем коде я делаю это:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
NSLog(@"Vimeo Segue");
if([segue.identifier isEqualToString:@"playVimeo"]) {
WebViewViewController *controller = (WebViewViewController *)segue.destinationViewController;
controller.vimeoURL = vimeoURL;
}
}
- (IBAction)launchCreativeFuture:(id)sender {
vimeoURL = @"72053500";
[self performSegueWithIdentifier:@"playVimeo" sender:sender];
}
Это работает, и я доволен этим. Однако...
Я наткнулся на другой способ сделать это, и я не понимаю, почему они оба работают и какой из них рекомендуется.
Здесь я добавил связанный IBAction и модальный переход, как показано на этих рисунках:
И мой код выглядит так:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if([segue.identifier isEqualToString:@"pushToGraduateCourses"]) {
NSLog(@"Grad Segue");
UIViewController *controller = (UIViewController *)segue.destinationViewController;
}
}
- (IBAction)launchGraduate:(id)sender {
NSLog(@"Grad Button");
[self performSegueWithIdentifier:@"pushToGraduateCourses" sender:sender];
}
Насколько я могу судить, довольно идентично с точки зрения кода ... за исключением того, что когда я это делаю, я получаю предупреждение: «Предупреждение: попытка презентации во время презентации!» ... когда я смотрю на свою консоль, "Grad Segue" регистрируется дважды... что имеет смысл, но в моем первом примере "Vimeo Segue" регистрируется только один раз.
Я думаю, что я задаю несколько вопросов:
а) может ли кто-нибудь заметить разницу между двумя методами? Потому что я не могу.
b) создание перехода из Interface Builder автоматически вызывает executeSegueWithIdentifier с кнопки без необходимости программно вызывать это из IBAction, связанного с этой кнопкой?
в) какой путь рекомендуется?
Заранее спасибо,
~ Джесси