Как мне вернуться к моему основному дисплею (A), если я перейду с экрана A на B на C и вернусь к B, используя unwindSegue - PullRequest
0 голосов
/ 04 июля 2019

В настоящее время я учусь программировать на Swift и сделал 3 разные страницы; Pages A, B, and C. С page A я могу перейти к page B, а с page B я могу перейти к page C или page A. Когда я иду к page C, я могу вернуться к page B или page A.

Проблема, с которой я сталкиваюсь, заключается в том, что, если я перейду с Page A до Page B до Page C обратно к Page B, при попытке закрыть Page B будет кратко отображаться Page C перед закрытием обратно на page A.

Все они находятся на отдельных viewcontrollers, и я только что представлял их все модально каждый раз

Я пытался использовать Пошаговые пошаговые инструкции и Создание раскручивающихся сегментов в Swift 3 чтобы понять, что я делаю неправильно, однако из того, что я прочитал на них (и из моего ограниченного знания Swift), никто из них не обсуждал возвращение на одну страницу и затем попытки закрыть после. Все они идут от 1 -> 2 -> 3 назад к 1 без промежуточного шага возврата к page 2.

@IBAction func close (_ unwindSegue: UIStoryboardSegue){} - это то, что я использовал в качестве своих unwindSegues, связывающих их с моим заполнителем Exit. Это было сделано на обоих Pages B and C

В настоящее время нет сообщения об ошибке, похоже, оно работает, но оно показывает тот промежуточный экран, который мне не нужен.

Спасибо!

Ответы [ 4 ]

1 голос
/ 04 июля 2019

Вы сказали:

, когда я нажимаю кнопку "Назад" на странице C -> B, это показывает, что я запускаю действие, которое представляет модально (если это помогает)

Именно в этом проблема.Перейдя от A к B к C, C не должен снова модально представлять B.Вы создаете новый, второй экземпляр B. У вас будет иерархия контроллера представления, которая выглядит следующим образом:

A »B1» C »B2

Еслитем не менее, вы успешно отменили / размотали от C до B, в иерархии контроллера представления вы бы получили только A и B:

A »B

И затем, когда B ушел, чтобы уволить / развернуть A, C давно бы ушел, и вы никак не могли бы увидеть это в своей анимации.


Если вы используете сегменты раскручивания, я 'd предположил бы, что у контроллера представления A было действие размотки, например, так:

@IBAction func unwindToA(_ segue: UIStoryboardSegue) { }

А у контроллера представления B могло бы быть действие размотки, например:

@IBAction func unwindToB(_ segue: UIStoryboardSegue) { }

Теперь, когда C хочет отмотатьсявернуться к B, если вы могли бы использовать последнее действие раскручивать.Если вы хотите развернуть A (из B или C), вы можете использовать предыдущее.

Просто убедитесь, что вы никогда не представляете / не показываете, когда хотите вернуться назад в иерархии контроллера представления.Либо используйте раскручивающиеся сегы, либо dismiss / pop в зависимости от ситуации.

0 голосов
/ 04 июля 2019

Кажется довольно запутанным описание вопроса.

Не уверен, но, возможно, вы по ошибке добавили переход со страницы B -> C на той же кнопке Назад. Пожалуйста, проверьте это также.

Я создал SimpleUnwindExample проект на GitHub. Надеюсь, что это поможет исправить вашу проблему.

Ссылка на репозиторий: https://github.com/harshal-wani/SimpleUnwindExample

Ура! * * 1013

0 голосов
/ 04 июля 2019

Извините, ваш вопрос мне не до конца понятен. Насколько я понимаю, если вы хотите вернуться из C в B View Controller, то вы можете сделать это. Просто используйте

self.dismiss(animated: false, completion: nil)

в действии «Кнопка выхода». Надеюсь, это поможет.

0 голосов
/ 04 июля 2019

Я не очень понимаю ваш вопрос. Но я полагаю, что ваша проблема в том, что вы использовали подарок вместо отклонения, когда возвращаетесь к B из C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...