Хтось знає, для чого використовується нова піктограма Exit під час редагування розкадрувань за допомогою Xcode 4.5?


100

Клацання правою кнопкою миші на значку «Вихід» дає порожнє вікно. Неможливо перетягнути з'єднання Ctrl до будь-яких елементів ІБ або відповідних вихідних файлів. Документи не дають любові. Не відображається у файлах nib, а лише в раскадровках. Моє припущення полягає в тому, що це слідування мовою, але я не бачу нових методів, щоб підкріпити це. Хтось?



Можливий дублікат Xcode 4.5 "
Розкладок

Відповіді:


104

У відеозаписі WWDC "Сесія 407 - прийняття дошки розгортки у вашому додатку" є багато інформації.

Скажімо, у вас є два контролери перегляду, пов'язані між собою. Реалізуйте наступну дію виходу на перший контролер перегляду:

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

Потім, на сцені Storyboard для другого контролера перегляду, перетягніть Ctrl з елемента інтерфейсу користувача, наприклад кнопки, на піктограму виходу внизу цього контролера перегляду. done:Ви додали в код першого контролера дії з'являться в якості опції. Тепер при активації кнопки, яку ви перетягнули Ctrl на піктограму виходу, повернеться до першого контролера перегляду та збереже його початковий стан (тобто елементи інтерфейсу, такі як введення тексту, нібито досі недоторканими).


3
Він фактично відкручується до того самого екземпляра контролера перегляду (та його поглядів).
Джон Хесс

Дякую, я читав це лише для того, щоб дізнатися, про що йдеться в "Зеленому виході", аби тільки з'ясувати, що він вирішує проблему для мене. У мене було два контролери перегляду, розділені контролером 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.