2012-03-26 3 views
3

Я использую раскадровки XCode 4.2. Первоначально у меня был Popover Segue, привязанный к UIButton на UIViewController, встроенный в навигационный контроллер, и все было хорошо.Popover Segue Crashes при вызове программно

Теперь мне нужно добавить условное поведение перед выполнением SEGUE, так что я сделал следующее:

  • удалила SEGUE
  • создал новый SEGUE от UIViewController
  • создал IBAction от кнопки
  • Вызывается [self performSegueWithIdentifier:@"mySegue" sender:self] в IBAction

приложение получает беспересадочный ugh prepareForSegue, но затем он выбрасывает SIGABRT и регистрирует следующие

\*** Assertion failure in -[UIStoryboardPopoverSegue perform], /SourceCache/UIKit_Sim/UIKit-1912.3/UIStoryboardPopoverSegue.m:27 

Любые идеи? У меня есть другие примеры этого рабочего штрафа с помощью push segues. Является ли это случаем неправильного поведения, который я продолжаю слышать?

+0

вы даете это делали SEGUE в идентификторов (имя)? –

+0

Yup. Он успешно готовитForSegue :( – ruthie

+0

Вы решили его? Вы установили якорь? – Chris

ответ

10

Может быть, это немного поздно:

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

Итак, когда вы хотите вызвать поповер SEGUE программным, вы должны сделать это в два этапа:

1. Подключите Segue к ViewController Вы просто перетащить из вашего ViewController, который должен выполнить переход к целевой ViewController и выберите Popover.

Connect Segue to ViewController

2. Определить идентификатор Это необходимо вызвать выполнить переход из кода

3. Подключите Anchor Вы перетащите якорь на объект, из которого вы хотите, popover для начала. На изображении ниже это BarButtonItem. Примечание: это не выполняется автоматически! (Таким образом, вы можете дополнительно выполнить некоторые действия подключения к BarButtonItem)

Connect the Anchor

4. Вызвать SEGUE из кода

[self performSegueWithIdentifier:@"yourIdentifier" sender:sender]; 
Смежные вопросы