Работя по проект, в който извиквам няколко сегии, вместо да използвам навигационни контролери. По-рано в моя проект настроих модална линия и я извиках от метода 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" се регистрира само веднъж.
Предполагам, че това, което питам, са няколко въпроса:
а) може ли някой да забележи разликата между двата метода? Защото не мога.
б) създаването на преход от Interface Builder извиква ли автоматично performSegueWithIdentifier от бутона, без да се налага програмно да го извиква от IBAction, който е свързан с този бутон?
в) кой начин се препоръчва?
Благодаря предварително,
~ Джеси