如何在返回视图时快速执行某些代码
当颠倒视图的细节时,我想要执行某些代码。这与viewdidload不同,或viewdidappear不同,因为我不希望它在应用第一次启动时运行,因为它是我的初始视图控制器,但只有在从另一个视图返回时才会运行。如何在返回视图时快速执行某些代码
我该如何去做到这一点?
谢谢。
你应该为这种事情使用委托,这是第一个tutorial i saw on google about it,但谷歌可以为一些不同的。委托是所有iOS开发人员应该知道的以及何时使用的关键编码模式。
因此,在你的情况下,你的第一个视图控制器将是第二个视图控制器的委托,这将允许第二个vc在第一个vc上执行方法,当它看起来合适时,对于这种情况我会假设在第二个VC可以追溯到第一
最简单的方法是让一些布尔属性格式(如Bool firstAppear
),然后用真正的初始化它在viewDidLoad方法,然后在viewDidAppear:
if firstAppear {
firstAppear = false
return
}
您可以使用viewWillAppear中和viewDidAppear方法。他们不仅召唤了一次,而且每次都会出现您的视图控制器。 viewDidLoad在视图控制器加载后仅调用一次
让我们考虑两个视图控制器VC1和VC2。您现在处于VC2并尝试导航。在VC2的ViewWillDisappear中试试这个代码。
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setBool(true, forKey: "mykey")
现在您正在导航回到VC1。在VC1 viewWillAppear中使用此代码
let defaults = NSUserDefaults.standardUserDefaults()
let mykey = defaults.boolForKey("mykey")
if mykey {
defaults.setBool(false, forKey: "mykey")
//execute your code here
}
这不适合我吗? – Khoury
首先,你可以设置此例如在的AppDelegate:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
...
let alreadyLaunched = NSUserDefaults.standardUserDefaults().boolForKey("alreadyLaunched")
if alreadyLaunched {
print("This is not the first app launch.")
}
else {
print("First app launch, setting NSUserDefault.")
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "alreadyLaunched")
}
}
然后检查,无论你想:
let alreadyLaunched = NSUserDefaults.standardUserDefaults().boolForKey("alreadyLaunched")
if alreadyLaunched {
print("This is not the first app launch.")
}
感谢您的 – Khoury