2015-12-16 3 views
1

У меня есть контроллер вида (в контроллере навигации) A, который переходит в режим просмотра контроллера B, а контроллер просмотра C также переходит к B (A -> B < - С). Контроллер просмотра B используется для выбора значения, которое передается обратно на A или C, но если я нажму «Отменить» или «Готово», он использует разматывание, чтобы вернуться к одному контроллеру, в зависимости от того, что было последним.Unwind segue - вернитесь к вызывающему виду, когда его несколько видов назовут

+0

ли вы что два различных раскрутку перетекает для контроллеров A и C? –

+0

У вас есть Aaron более подробную информацию? Может быть, скриншоты или код. Трудно понять, чего вы хотите. –

ответ

6

Вы можете отключить повторную отступку в зависимости от того, какой режим управления просмотром был инициирован. Все, что вам нужно сделать, это реализовать один и тот же метод, который вы возвращаете в всех viewControllers, которые SEGUE к ViewController В.

Таким образом, в ViewController А и ViewController C, реализовать следующий метод:

@IBAction func backFromB(segue: UIStoryboardSegue) { 
    print("Back from B") 
} 

Затем, когда вы управления Drag-с вашего Отмена кнопку в ViewController B к Выход значок в верхней части ViewController выберите backFromB из всплывающего меню.

drag to set up exit segue


choose method to return to


Затем, когда вы запустите приложение и нажмите Отменить в ViewController B, вы будете возвращаться к любой ViewController А или ViewController С (в зависимости от того один segued к Б). Это даже работает, если один из них является Show (Push), а другой - Модальный.

demonstration picture

+0

Отлично, спасибо за быстрое и тщательное решение. – Aaron

+0

Добро пожаловать. Примите мой ответ, щелкнув галочку рядом с моим ответом, чтобы включить его. – vacawama

+0

Спасибо, первый раз задавая вопрос. – Aaron