我正在使用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
}
}
知道我能做什么吗?
答案 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上,我想再次调用我的视图。