一种在每个 运行 swift 上重新加载 ViewDidLoad 的方法

A way to reload the ViewDidLoad on each run swift

我正在用 swift 制作这个小游戏,游戏是使用 viewDidLoad 设置的。每天的游戏都应该略有不同,但这取决于 viewDidLoad 运行s。因此,假设用户在第 1 天玩游戏并保持游戏活跃到第 2 天,游戏将在第 2 天无法运行,因为 viewDidLoad 不是 运行。 为了让游戏正常运行,我需要 运行 VieDidLoad 每次 "applicationDidBecomeActive",以确保它 运行 是它应该的。

我试过这样做:

func applicationDidBecomeActive(application: UIApplication) 
{
myViewController?.viewDidLoad()
}

我还尝试像这样包装我在 viewDidLoad 中的代码,并 运行 它在 applicationDidBecomeActive 中。但那不行。

override func viewDidLoad()
{
   func refreshView()
   {
    //all the code goes here
    }
}

知道我能做什么吗?

将您的视图控制器设置为侦听applicationDidBecomeActive 通知和运行 接收通知时的配置方法

NSNotificationCenter.defaultCenter().addObserver(
    self,
    selector: "refreshView:",
    name: UIApplicationDidBecomeActiveNotification,
    object: nil)

viewDidLoad 方法不意味着要加载多次,当视图首次创建加载到内存时,每个 viewController 的生命周期只会调用一次,这是不正确的方法再次调用又一次。

无需一次又一次地加载 viewDidLoad 即可实现您想要的,将您的 refreshView 方法移出 viewDidLoad 并在需要时调用它,您可以从 [= 调用一次12=] 之后您可以在需要时再次调用它。

您可以响应应用程序 notification 方法,例如 UIApplicationWillEnterForegroundNotification 或在 UIApplicationDidBecomeActiveNotification 然后弄清楚你是否要刷新视图,如果你想刷新视图只需调用你的 refresView 方法。

您的代码应如下所示

override func viewDidLoad()
{
   super.viewDidLoad()
   NSNotificationCenter.defaultCenter().addObserver(self, selector: "OnAppBecameActive", name: UIApplicationDidBecomeActiveNotification, object: nil)

   refreshView()
}

func refreshView()
{
    //all the code goes here
}

并添加此方法

func OnAppBecameActive()
{
// Add logic here to check if need to call refresh view method
if needToRefreshView
{
  refreshView()
}
}

我也有同样的问题,但是我打电话解决了

self.viewDidLoad()

在我的 Func 上,我想调用我的视图并再次从中加载。