视图控制器在进入前面时必须自行刷新



我有一个使用 Swift 4.0 开发的应用程序。我有一个视图控制器,我正在上面显示一些有用的信息,用户可以与它们进行交互。我们称之为 BaseViewController。

我在做什么:BaseViewController 正在启动不同的其他 ViewController,用户可以关闭这些 ViewController 并返回到 BaseViewController。

我想要什么:现在我希望每当用户回到BaseViewController时,它都会更新自己。我知道可以使用协议来完成,但我只是想要一个简单的方法。就像在Android中一样,每当活动进入活动状态时,都有onResume方法来执行更新。

我认为没有必要共享代码,因为从一个视图控制器启动其他视图控制器非常简单。我只是想知道更好的方法。提前致谢

更新:这就是我在基本控制器上调用下一个控制器的方式

let dialogRegisterForEventVC = UIStoryboard(name: "Main",bundle: nil).instantiateViewController(withIdentifier: "idDialogRegisterForEventVC") as! DialogRegisterForEventVC
    dialogRegisterForEventVC.modalPresentationStyle = .overCurrentContext
    dialogRegisterForEventVC.modalTransitionStyle = .crossDissolve
    dialogRegisterForEventVC.isUserLogin = isLogin
    self.present(dialogRegisterForEventVC, animated: true) {
    }

您可以随时使用 viewWillAppear 方法

override func viewWillAppear(_ animated: Bool) {
  print("This is called when coming back to Base View Controller")
}

在此处使用刷新代码。当您弹出viewController时,将调用此名称<</p>

div class="ans>

有不同的情况,例如您需要处理它们如果你在此之上呈现另一个视图控制器,你应该使用

override func viewWillAppear(_ animated: Bool)

如果您需要在应用程序处于前台状态时刷新视图,则需要以下代码:

 override func viewDidLoad() {
        super.viewDidLoad()
        NotificationCenter.default.addObserver(self, selector: #selector(willResignActive), name: UIApplication.willEnterForegroundNotification, object: nil)
    }
  @objc func willResignActive(_ notification: Notification) {
       refreshMyView()
    }

此外,还可以创建委托,视图控制器可以调用该委托来更新此视图控制器。另一个选项是使您的视图控制器观察通知中心中的自定义通知,并在您需要刷新视图控制器时推送一次此通知。

如果使用通知中心,只需确保 UI 更改位于主线程上即可。

最新更新