Unwind Segue в Xcode 6.1.1 с раскадрой

Я читал, что unind segue прослушиваются в Xcode 6. Я использую Xcode 6.1.1, и я использую swift.

Я использую кнопку "Назад", которая устанавливается навигационным контроллером. Таким образом, я не могу перетащить на значок выхода. Кроме того, я не могу перетащить из значка viewController для выхода.

Это ошибка? Или еще я упускаю некоторые фундаментальные знания о том, как использовать unind segue. Как настроить раскручивание сцен из раскадровки?

Ответ 1

Сработало. Если вы представляете из NavigationController или TabBarController (неуверенность в отношении TabBarController), вам необходимо подклассифицировать навигационный контроллер и добавить к нему разворот. В раскадровке не забывайте менять класс вашего навигационного контроллера. Моя иерархия представлений была NavController → TableController → DetailController. После добавления метода в пользовательский класс NavBar добавьте его в VC, к которому вы хотите ВОЗВРАТИТЬ. Затем вы сможете выполнить ctrl-drag для выхода. Я считаю, что это ошибка, так как как только она подключена, я смог удалить подкласс и вернуться к Stock NavigationController, и он все еще работал.

Ответ 2

Я хочу дать подробный ответ:

Чтобы выполнить разматывание, перейдите к контроллеру представления, к которому вы хотите перейти, и добавьте следующую функцию; (название может меняться, конечно)

@IBAction func unwindToMainMenu(segue: UIStoryboardSegue) {

}

После того, как вы добавите эту функцию, вы сможете увидеть эту функцию разматывания с любого контроллера вида на вашем раскадровке. Щелкните правой кнопкой мыши значок выхода в верхней части любого контроллера вида. exit icon right click

Если вы хотите выполнить разматывание с помощью кнопки, вы можете cntrl + перетащить с кнопки, чтобы выйти из значка, и выбрать функцию unwindSegue. Готово!

Unwind with Button

Если вы хотите программно выполнить размотку, затем cntrl + перетащите значок значка viewController на значок выхода и выберите функцию размотки.

enter image description here

Затем откройте Контур документа и нажмите кнопку размотки.

enter image description here

Перейдите в Attributes Inspector внутри Utilities и укажите идентификатор вашего разматывания.

enter image description here

Наконец, вызовите функцию performSegueWithIdentifier следующим образом:

self.performSegueWithIdentifier("goToMainMenu", sender: self)

Надеюсь, что это поможет!

Ответ 3

Получил работу над Xcode 6.2. Моим случаем является ViewController A, представляющий B модально. Отпустите следующие шаги настройки:

  • В A напишите IBAction

    -(IBAction)unwindFromB:(UIStoryboardSegue *) unwindSegue 
    {
      ViewControllerB *vc = [unwindSegue sourceViewController];
      // get whatever data you want to pass back from B
    }
    
  • В раскадровке найдите B и щелкните правой кнопкой мыши по кнопке "Выход" вверху, затем в меню "Представление Segue" появится список unwindFromB, который вы только что создали в A

  • Нажмите маленький знак "+" справа и соедините его с B, выберите "manual"

  • Не забудьте установить идентификатор разматывания, если вам нужно его программным образом назвать.

Ответ 4

Я обнаружил, что я не смог перетащить из UITableViewCell в объект Exit в диспетчере представлений на раскадровке.

Решение заключалось в first добавлении соответствующего кода IBAction в код. После того, как существует IBAction, мигает цель перетаскивания.

-(IBAction)prepareForUnwind:(UIStoryboardSegue *)segue {

}