2013-08-31 3 views
0

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

В моей раскадровки это выглядит следующим образом:

UIButton with linked IBAction

Modal Segue with Custom Identifier

Тогда в моем коде, я делаю это:

-(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 и модальный SEGUE, в соответствии с этими фотографиями:

linked 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» регистрируется только один раз.

Я предполагаю, что я спрашиваю несколько вопросов:

а) кто может определить разницу между этими двумя методами? Потому что я не могу.

b) действительно ли создание segue из Interface Builder автоматически вызывает функцию executeSegueWithIdentifier от кнопки без необходимости программно вызывать это из IBAction, связанного с этой кнопкой?

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

Спасибо заранее,

~ Джесси

ответ

2

A. Да

B. Да, когда вы создали SEGUE от кнопки, кнопка вызывает performSegueWithIdentifier.

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

+0

Приветствия, спасибо Кевину, это помогает ... –

+1

Ну, @ jesses.co.tt. Если это помогло, ответили ли вы на ваш вопрос? Если это так, дайте ему хороший, большой, толстый зеленый флажок. :) – CaptJak

+0

Да, я просто сделал.Я колебался b/c, он ответил только на 2/3 вопросов, но я думаю, я не должен задавать три вопроса в одном! –

Смежные вопросы