当反转视图的segue时,我想要执行某些代码。这与viewdidload或viewdidappear不同,因为我不希望它在应用程序首次启动时运行,因为它是我的初始视图控制器,但仅限于从另一个视图返回时。
我如何实现这一目标?
感谢。
答案 0 :(得分:0)
你应该使用委托来做这种事情,这里是第一个tutorial i saw on google about it,但可以google一些不同的。委托是所有iOS开发人员应该知道的以及何时使用的关键编码模式。
所以在你的情况下,你的第一个视图控制器将是第二个视图控制器的委托,这将允许第二个vc在它认为合适时在第一个vc上执行方法,对于这种情况,我将假设在第二个vc之前回到第一个
答案 1 :(得分:0)
最简单的方法是保留一些布尔值(例如Bool firstAppear
)然后在viewDidLoad方法中使用true初始化它,然后在viewDidAppear中:
if firstAppear {
firstAppear = false
return
}
答案 2 :(得分:0)
您可以使用viewWillAppear和viewDidAppear方法。他们不仅打了一次电话,而且每次都打电话给你的视图控制器。 viewDidLoad在视图控制器加载后只调用一次
答案 3 :(得分:0)
让我们考虑两个视图控制器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
}
答案 4 :(得分:0)
首先,您可以在 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.")
}