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 {
}