返回视图swift时如何执行某些代码

时间:2016-04-27 08:11:41

标签: ios swift viewdidload

当反转视图的segue时,我想要执行某些代码。这与viewdidload或viewdidappear不同,因为我不希望它在应用程序首次启动时运行,因为它是我的初始视图控制器,但仅限于从另一个视图返回时。

我如何实现这一目标?

感谢。

5 个答案:

答案 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.")
}