Можно ли наблюдать изменения в представлении ViewController? - PullRequest
0 голосов
/ 25 сентября 2019

Есть ли в Swift эквивалент RACObserve(self, presentingViewController)?

Или как-то иначе, почему имитировать это поведение?

  • Моя проблема заключается в том, что я хочу получать уведомления при каждом просмотреКонтроллер «скрыт» другим контроллером представления.В объекте я бы проверил, если self.presentingViewController равно nil.
  • Обратите внимание, что в этом сценарии нет сведений о том, какой контроллер представления представлен, поэтому невозможно уведомить его изнутри viewDidAppear / viewDidDisappear.

1 Ответ

0 голосов
/ 25 сентября 2019

Насколько я понимаю ваш вопрос: вам нужно знать, какой контроллер представления представлен сейчас, и вам нужно уведомление в viewDidAppear/viewDidDisappear.

Так что мы можем получить это несколькими способами.

Простой способ:

  1. Получить информацию о том, какой из них сейчас является верхним ViewController.

2.Вызовите этот метод в своем viewDidAppear/viewDidDisappearВот так:

Получить Который является Top ViewController

func getTopViewController() -> UIViewController? {

        if var topVC = UIApplication.shared.keyWindow?.rootViewController {

            while let presentedViewController = topVC.presentedViewController {
                topVC = presentedViewController
                return topVC
            }
            return topVC
        }

        return nil
    }

Позвонить в viewDidAppear:

override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(true)
        if let top = getTopViewController() {
            print("topView Controller name \(top.title)")
            top.view.backgroundColor = .red
        }
    }

Надеюсь, это поможет вам!

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