【问题标题】:IOS Swift how reload viewcontroller when app come from background?当应用程序来自后台时,IOS Swift如何重新加载视图控制器?
【发布时间】:2017-02-04 19:35:18
【问题描述】:

当用户从后台调用应用程序时,我希望从视图控制器重新加载一个函数?

【问题讨论】:

  • 在后台模式下使用 NSUserdefault 中的一些标志值并检查值是否设置为 true 然后调用,然后在调用后再次将标志设置为 false 希望有意义!!
  • 如果从后台调用viewcontroller,再次调用的函数是viewdidload()?
  • 如果有人正在寻找 swift 3 的解决方案,请访问:stackoverflow.com/a/34529572/6595705

标签: ios swift


【解决方案1】:

您可以为这些通知注册您的控制器并相应地重新加载您的控制器。

UIApplicationDidEnterBackgroundNotification
UIApplicationWillEnterForegroundNotification

【讨论】:

  • 在 AppDelage 我有这个功能并且我启用了背景模式。
  • 如果您已经在这些方法中实现了您的功能,那么您到底面临什么问题?
  • sry 这个函数在 AppDelegate 中而不是在 viewcontroller 中。这个函数观察控制器内部应用的状态?
  • 因此您可以在 UIViewController 的 viewDidLoad 中注册这些通知,然后您也可以在 UIViewController 中处理这些事件
  • 谢谢解决我的问题。
【解决方案2】:

详细说明 nishith 的回答:

将以下代码添加到您要刷新的视图控制器中

override func viewWillAppear() {
    super.viewWillAppear()
......
......
NotificationCenter.default.addObserver(self, selector:#selector(YourViewController.methodToRefresh), name: UIApplication.willEnterForegroundNotification, object: UIApplication.shared)
......
......
}

永远记得在视图消失时进行清理:

    override func viewWillDisappear(animated: Bool) {
    NotificationCenter.default.removeObserver(self)
}

【讨论】:

    猜你喜欢
    • 2016-09-29
    • 1970-01-01
    • 1970-01-01
    • 2015-09-21
    • 1970-01-01
    • 2017-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多