SWIFT, ViewControllers и раскрутить переход к начальному ViewController

У меня проблемы с Unwind Segue. У меня есть 3 ViewController, и они все относятся к классу ViewController.swift. Я пытаюсь получить последний ViewController, который является третьим, чтобы перейти к начальному ViewController, одним нажатием кнопки, но я не могу его получить. Я пытался исследовать, прежде чем задавать этот вопрос, но не смог его найти. Если вам нужна дополнительная информация, дайте мне знать.


person jas bath    schedule 05.01.2016    source источник


Ответы (1)


У вас есть VC1 -> VC2 -> VC3 и вы хотите отмотаться от VC3 напрямую к VC1. Для этого вам нужен @IBAction, определенный в VC1, но не определенный в VC2. В настоящее время это невозможно, так как все ваши ViewController используют одно и то же определение класса в ViewController.swift.

Один из способов решить эту проблему без дублирования всего кода в ViewController.swift — создать подкласс ViewController и добавить только ту функцию, которая уникальна для VC1. Затем в раскадровке выберите первый ViewController и в Инспекторе удостоверений установите для Пользовательского класса значение MainViewController.

class MainViewController: ViewController {
    @IBAction func returnToMain(segue: UIStoryboardSegue) {
        print("back in the MainViewController")
    }
}

Затем, когда вы настроите откатить переход, перетащите control с кнопки на значок Выход в верхней части третьего ViewController и выберите действие returnToMain из всплывающего окна.

person vacawama    schedule 05.01.2016
comment
Извините, я новичок, как бы мне создать подкласс VC1? - person jas bath; 05.01.2016
comment
Каждый viewController должен иметь свой собственный связанный класс. См. этот вопрос о том, как добавить новый класс для viewController. stackoverflow.com/q/26962713/1630618. Приведенный выше ответ предполагает, что между вашими viewControllers много общего, и вы не хотите дублировать весь файл viewController.swift. В приведенном выше коде показано, как создать подкласс другого viewController и добавить только необходимую дополнительную функцию в качестве точки приземления для возврата из другого viewController. - person vacawama; 05.01.2016
comment
Большое спасибо, я начинаю больше разбираться в материалах UnwindSegue. - person jas bath; 06.01.2016
comment
У меня есть еще один вопрос. Я делаю что-то более длинное, чем 10 000 высоты для scrollView. Я сделал это 10 000, но когда я превыслю 10 000, он выдаст ошибку, есть ли способ превысить 10 000? Я использовал много приложений, число которых выходит за пределы 10 000, но когда я пытаюсь создать что-то большее, чем 10 000, это выдает ошибку, говорящую, что Interface Builder не поддерживает размеры UIView, превышающие 10 000 на 10 000. Это помогло бы мне во многом, но я видел много приложений, у которых scrollView длиннее 10 000. - person jas bath; 06.01.2016
comment
Вы должны задать новый вопрос, так как это совершенно не связано с раскруткой. Если ответ на этот вопрос решил вашу проблему, примите его, нажав на галочку слева, чтобы она стала зеленой. Спасибо. - person vacawama; 06.01.2016
comment
Я бы хотел, но это не позволит мне. ждать 5 дней :( - person jas bath; 06.01.2016