Кто-нибудь знает, для чего используется новый значок выхода при редактировании раскадровки с помощью Xcode 4.5?


100

Если щелкнуть правой кнопкой мыши значок выхода, появится пустое окно. Невозможно перетащить соединение, удерживая Ctrl, к каким-либо элементам IB или соответствующим исходным файлам. Документы не любят. Не отображается в файлах пера, только раскадровка. Я предполагаю, что это следствие переходов, но я не вижу никаких новых методов для его поддержки. Кто угодно?



Возможный дубликат раскадровки Xcode 4.5 Exit
Tamás Sengel 08

Ответы:


104

В видеоролике WWDC «Сессия 407 - Использование раскадровки в вашем приложении» содержится много информации.

Скажем, у вас есть два контроллера представления, связанные переходом. Реализуйте следующее действие выхода на первом контроллере представления:

- (IBAction)done:(UIStoryboardSegue *)segue {
    NSLog(@"Popping back to this view controller!");
    // reset UI elements etc here
}

Затем на сцене раскадровки для второго контроллера представления, удерживая нажатой клавишу Ctrl, перетащите элемент пользовательского интерфейса, например кнопку, на значок выхода в нижней части этого контроллера представления. done:Вы добавили в код первого контроллера действия появятся в качестве опции. Теперь при активации кнопки, которую вы перетащили с нажатой клавишей Ctrl к значку выхода, она вернется к первому контроллеру представления и сохранит свое исходное состояние (т.е. элементы пользовательского интерфейса, такие как ввод текста, предположительно, все еще нетронутыми).


3
Фактически он возвращается к тому же самому экземпляру контроллера представления (и его представлений).
Джон Хесс,

Спасибо, я читал это, чтобы узнать, что такое «Зеленый выход», только чтобы узнать, что это решает мою проблему. У меня было 2 контроллера представления, разделенных контроллером TabBar и контроллером навигации, и «Pop» не работал, чтобы вернуться назад. Это заняло 2 минуты, и все заработало, как вы сказали! СПАСИБО!
user589642

Как я могу вызвать метод действия на Doneкнопке в классе представления B перед выходом обратно к представлению A?
эксперт

Если вы посмотрите видео WWDC, вы можете перейти к 37:15, чтобы увидеть часть о «
сегментах

220

Мне было трудно следить за принятым ответом, поэтому вот более подробная информация.

Учитывая фотографию ниже на контроллере представления C, вы можете «выйти» обратно к любому контроллеру представления на пути перехода.

введите описание изображения здесь

ViewController A можно написать:

- (IBAction)done:(UIStoryboardSegue *)segue {
    // Optional place to read data from closing controller
}

ViewController B можно написать:

- (IBAction)back:(UIStoryboardSegue *)segue {
    // Optional place to read data from closing controller
}

ViewController C вы управляете перетаскиванием от кнопки «назад» к зеленой опции выхода и выбираете назад: ViewController C вы управляете перетаскиванием от кнопки «готово» к зеленой опции выхода и выбираете готово: введите описание изображения здесь

Примечание: Несмотря на то, что методы на других контроллерах зрения они появляются для ViewController С выходом «s. Перетаскивание элемента управления и выбор метода определяет, к какому ViewController нужно расслабиться.


2
Еще одно замечание: иногда зеленая кнопка выхода не активна, даже если все шаги выполнены. В этом случае повторное открытие раскадровки (или проекта xcode) заставляет его работать должным образом.
zxcat

3
Еще одна проблема, с которой я столкнулся, заключалась в том, что я не поместил сигнатуру метода размотки segue в свой файл .h или расширение класса. После того, как я добавил его, во всплывающем окне появился сегмент раскрутки.
Стив Мозер,

2
+ Бесконечность дляEven though the methods are on other view controllers they show up for the ViewController C's exit.
Санта-Клауса

15

В дополнение к ответу Эрика вот как это работает с:

Функция, которую вы добавляете в целевой контроллер, выглядит так:

@IBAction func backFromOtherController(segue: UIStoryboardSegue) {
    NSLog("I'm back from other controller!")
}
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.