2012-05-31 9 views
6

Я работаю на раскадровке, которая имеет пару взглядов на первый взгляд условие помещается я хочу, если условие удовлетворяет только тогда навигация должна произойтикак применять условие на основе пользовательского SEGUE в раскадровке

Для этого я использовал на заказ segue, но независимо от того, удовлетворяет ли мое состояние или нет, оно переходит к новому представлению.

Я создал метод в пользовательском SEGUE класса

- (void) perform{ 

    NSLog(@"source %@",self.sourceViewController); 
    NSLog(@"dest %@",self.destinationViewController); 

    UIViewController *sVC=self.sourceViewController; 
    UIViewController *dVC=self.destinationViewController; 

    [sVC.navigationController pushViewController:dVC animated:YES]; 


} 

Я хочу, чтобы установить состояние, если результат равен 1, то только он должен перемещаться. Woul prepareforsegue или initwithsegue дайте мне любую помощь

+0

Формат вашего кода. –

ответ

30

Вы говорите, что хотите выполнить только segue, если условие истинно?

Если это так, вместо создания segue непосредственно из ячейки управления или таблицы создайте безцелевой переход. В триггерном режиме segue имеет контроллер вида в качестве источника, и он не будет срабатывать автоматически. Вместо этого вы можете запускать его программно в любое удобное для вас время, в том числе из IBAction.

Чтобы создать бесступенчатый переход, начните управление + перетащить сегмент из значка контроллера с изображением в док-станции сцены в нижней части сцены. Перетащите на сцену назначения, как обычно, и выберите тип сегмента. Выберите сегю, а в инспекторе выберите идентификатор сегмента.

Во время выполнения, когда вы хотите выполнить segue, вызовите - [UIViewController performSegueWithIdentifier: sender:]. Вы можете передать любой объект, который хотите отправить отправителю, в том числе nil. Если отправитель вам не подходит, пропустите нуль.

Итак, в заключение:

  • Создать triggerless SEGUE от контроллера представления на сцену назначения
  • Установить идентификатор для Segue в инспекторе
  • Во время выполнения и кода формы, звоните - [UIViewController performSegueWithIdentifier: отправитель:], когда вы хотите вызвать segue.
+0

Спасибо за ваш ответ, но могли бы вы рассказать мне, что движение, которое я перетаскиваю из источника в пункт назначения, показывает мне push, modal, custom и я выбираю custom и даю этому segue идентификатор. Но поскольку я установил его идентификатор, он будет принудительно вызовите метод класса segue нажатием кнопки, как он будет проверять состояние –

+0

привет Jon, я применил, как вы сказали, и теперь он толкает дважды, я создал push-сегу и установил его идентификатор, когда я нажимаю кнопку, которую я написал [UIViewController performSegueWithIdentifier: отправитель:] метод [self performSegueWithIdentifier: @ "JHCustomSegue" отправитель: ноль]; вы можете, пожалуйста, chk wat, я делаю неправильно здесь –

+3

Привет, наконец, я нашел solutio Надеюсь, что это поможет другим. Вы можете вручную выполнить segues. Когда вы создаете сегу в раскадровке, вместо Ctrl + перетаскивания с помощью кнопки на контроллер просмотра перетащите из контроллера просмотра в другой контроллер просмотра. Дайте segue имя, затем в коде, который вы называете [self performseguewithidentifier @ "seguename"] –

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