Какъв е правилният начин за извикване на segue в XCode 4?

Работя по проект, в който извиквам няколко сегии, вместо да използвам навигационни контролери. По-рано в моя проект настроих модална линия и я извиках от метода IBAction на няколко различни бутона (извиквам една и съща линия от различни бутони, тъй като предавам низ заедно със стъпката).

В моята сценария изглежда така:

UIButton със свързано 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 и модален преход, според тези снимки:

свързано IBAction

modal segue identifier

И кодът ми изглежда така:

-(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, който е свързан с този бутон?

в) кой начин се препоръчва?

Благодаря предварително,

~ Джеси


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


Отговори (1)


А. Да

B. Да, когато сте създали преход от бутона, бутонът извиква performSegueWithIdentifier.

В. Според мен трябва да направите възможно най-много UI дизайн в сценария, отидете на код само ако трябва да актуализирате своя UI въз основа на нещо в кода. Пр. Ако потребителят е администратор във вашето приложение, ще искате да преминете към страница с настройки, различна от стандартния потребител.

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
Актуализира отговора, за да отговори на първия въпрос :) - person Kevin; 01.09.2013