WedX - журнал о программировании и компьютерных науках

Удаление контроллера представления из другого UIViewController Swift iOS

Мне интересно, как я могу удалить контроллер представления, который в настоящее время не включен в приложение?

Скажем, я перехожу от OldViewController к NewViewController. Как я могу удалить OldVC после загрузки NewVC, пока приложение все еще находится на NewVC?


  • А какой контроллер вы хотите показать вместо OldViewController? 10.11.2016
  • A - ›B (представлено модально над A) -› C (представлено модально над B), и вы хотите вернуться из C в A, верно? 10.11.2016
  • Я только что отредактировал сообщение, чтобы дать представление об иерархии контроллеров просмотра 10.11.2016
  • Вы можете разместить свою раскадровку? Как вы настраиваете каждый сегмент? 10.11.2016
  • Думаю, я просто перефразирую вопрос, чтобы было проще 10.11.2016

Ответы:


1

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

Затем я нашел это предложение, которое я изменил с помощью другого поколения снимков, поскольку оно не работало у меня должным образом.

Возможно не лучшее решение, но все же может быть полезно.

Вспомогательные расширения:

extension UIViewController {
    func dismissModalStack(animated: Bool, completion: (()->Void)?) {
        guard let snapshot = UIApplication.shared.delegate?.window??.snapshotView() else { return }
        self.presentedViewController?.view.insertSubview(snapshot, at: Int.max)
        self.dismiss(animated: true, completion: completion)
    }
}

extension UIView {
    public func snapshotImage() -> UIImage? {
        UIGraphicsBeginImageContextWithOptions(bounds.size, isOpaque, 0)
        drawHierarchy(in: bounds, afterScreenUpdates: false)
        let snapshotImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return snapshotImage
    }

    public func snapshotView() -> UIView? {
        guard let snapshotImage = snapshotImage() else { return nil }
        return UIImageView(image: snapshotImage)
    }
}

Использование:

В последнем представленном контроллере представления:

@IBAction func dismissPressed() {
    self.presentingViewController?.presentingViewController?.dismissModalStack(animated: true, completion: nil)
}

Результат:

введите описание изображения здесь

10.11.2016
Новые материалы

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

ИИ в аэрокосмической отрасли
Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


Для любых предложений по сайту: [email protected]