Как правильно вызвать переход в XCode 4?

Я работаю над проектом, в котором я вызываю несколько переходов вместо использования контроллеров навигации. Ранее в моем проекте я установил модальный переход и вызвал его из метода IBAction нескольких разных кнопок (я вызываю один и тот же переход с разных кнопок, поскольку я передаю строку вместе с переходом).

В моей раскадровке это выглядит так:

UIButton со связанным IBAction

Modal Segue с пользовательским идентификатором

Затем в моем коде я делаю это:

-(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 и модальный переход, как показано на этих рисунках:

связанный 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, связанного с этой кнопкой?

в) какой путь рекомендуется?

Заранее спасибо,

~ Джесси


person jesses.co.tt    schedule 31.08.2013    source источник


Ответы (1)


А. Да

Б. Да, когда вы создали переход из кнопки, кнопка вызывает метод executeSegueWithIdentifier.

C. На мой взгляд, вы должны делать как можно больше дизайна пользовательского интерфейса в раскадровке, переходить к коду только в том случае, если вам нужно обновить свой пользовательский интерфейс на основе чего-то в коде. Бывший. Если пользователь является администратором в вашем приложении, вы захотите перейти на другую страницу настроек, чем обычный пользователь.

person Kevin    schedule 31.08.2013
comment
Ну, @jesses.co.tt. Если это помогло, ответило ли это на ваш вопрос? Если да, поставьте красивую, большую, толстую, зеленую галочку. :) - person CaptJak; 01.09.2013
comment
Да, я только что сделал. Я колебался, потому что он ответил только на 2/3 вопросов, но я думаю, что мне не следует задавать три вопроса в одном! - person jesses.co.tt; 01.09.2013
comment
Обновлен ответ, чтобы ответить на 1-й вопрос :) - person Kevin; 01.09.2013