"не переходить с идентификатором" при использовании "Размотать переход" со ссылкой на раскадровку - PullRequest
0 голосов
/ 18 февраля 2019

Я следовал инструкциям здесь и здесь , которые предполагают, что у меня должна быть возможность создавать переходы для раскрутки / редактирования даже при использовании ссылки на раскадровку.

Процесс довольно прост:

PhotoDetailScene имеет ссылку на раскадровку EditHistoryScene и жест касания, чтобы вызвать переход, затем у меня есть кнопка закрытия на EditHistoryScene , которая раскручивается обратно к PhotoDetailScene .Настоящее прекрасно работает (пользовательский segue 'show' открывает EditHistoryScene), и если я использую вызов dismiss(), он отклоняется нормально.Но разматывание с идентификатором segue всегда завершается неудачно с помощью:

EditHistoryScene has no segue with identifier 'UnwindEditHistorySegue'

В моем действии кнопки закрытия EditHistoryScene у меня есть:

func closeButtonPressed(_ sender: Any) 
    performSegue(withIdentifier: "UnwindEditHistorySegue", sender: self)
}

И в моем PhotoDetailScene я добавил:

@IBAction func unwindToPhotoDetailScene(_ unwindSegue: UIStoryboardSegue) {
    print("It works!")
}

И вот как я настроил это в IB, с методом unwindToPhotoDetailScene(), связанным с раскадровкой ссылка (так как это единственный способ, которым IB позволил бы мне ctrl + связать выход):

Представление segue: enter image description here

Развернуть свойства segu (и имя segue) enter image description here

Ссылка раскадровки правильно установлена ​​для раскадровки назначения: enter image description here

Точка выхода ссылки раскадровки подключена обратно кPhotoDetailScene: enter image description here

Экземпляр раскадровки EditHistoryScene не подключен к @IBOutlet? enter image description here

Мое лучшее предположение, что он терпит неудачу, потому что это ссылка на раскадровку, а последовательность раскрутки определяется на tон ссылка , а не фактический экземпляр раскадровки.Но я не могу понять, как напрямую присоединить точку выхода EditHistoryScene к PhotoDetailScene.

1 Ответ

0 голосов
/ 19 февраля 2019

Вам не нужно создавать какие-либо сегменты для самой ссылки.

Как только ваша вторая раскадровка содержит ссылку на первую раскадровку, доступны все функции раскрутки, определенные в первой раскадровке.

Вы создаете выходные сегменты, перетаскивая их из триггера выхода на значок выхода в сцене контроллера представления.

Если вы хотите запустить раскручивание с помощью кнопки «Закрыть», просто перетащите Ctrl с помощью кнопки «Закрыть».к значку «выход» в верхней части его контроллера представления, и вы увидите unwindToPhotoDetailScene в качестве опции.

Вам нужно только дать segue идентификатор, если вы хотите запустить его программно.

Например, вам может потребоваться функция обработчика действия для кнопки закрытия, которая проверяет наличие несохраненных изменений.Если есть, попросите пользователя подтвердить, что он потеряет свои изменения (или сохранить или что-то еще).Как только они будут готовы продолжить, вы можете вызвать раскрутку.

Чтобы установить это, удерживайте нажатой клавишу Ctrl при перетаскивании объекта контроллера вида на его собственный значок выхода.Создайте последовательность раскрутки и присвойте ей идентификатор.

...