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

时间:2015-08-23 12:23:12

标签: ios iphone xcode swift viewdidload

我正在使用swift创建这个小游戏,并使用viewDidLoad设置游戏。每天游戏都会略有不同,但这取决于viewDidLoad的运行情况。因此,假设用户在第1天进行游戏并将游戏保持活跃至第2天,由于未运行viewDidLoad,游戏将无法在第2天运行。 为了使游戏正常运行,我需要每次“applicationDidBecomeActive”运行VieDidLoad,以确保它按预期运行。

我试过这样做:

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

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

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

知道我能做什么吗?

3 个答案:

答案 0 :(得分:2)

将视图控制器设置为侦听applicationDidBecomeActive通知,并在收到时运行配置方法

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

答案 1 :(得分:1)

viewDidLoad方法并不意味着多次加载,当视图首次在内存中创建加载时,每个生命周期viewController只调用一次,这是不正确的方法一次又一次地调用它

您可以在不加载viewDidLoad一次又一次的情况下将refreshView方法移出viewDidLoad并在需要时调用它,您可以在{{1}后调用它之后,您可以在需要时再次调用它。

您可以回复应用viewDidLoad等方法 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
}

答案 2 :(得分:0)

我有同样的问题,但我通过电话

解决了这个问题
self.viewDidLoad()

在我的Func上,我想再次调用我的视图。