Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 返回视图时如何执行某些代码_Ios_Swift_Viewdidload - Fatal编程技术网

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

Ios 返回视图时如何执行某些代码,ios,swift,viewdidload,Ios,Swift,Viewdidload,当反转视图的顺序时,我希望执行某些代码。这与viewdidload或ViewDidDisplay不同,因为我不希望它在应用程序首次启动时运行,因为它是我的初始视图控制器,但仅在从另一个视图返回时运行 我该如何实现这一目标 谢谢。这类事情你应该使用代理,这里是第一个,但可以用谷歌搜索一些不同的。委派是一种关键的编码模式,所有iOS开发人员都应该知道它以及何时使用它 因此,在您的情况下,您的第一个视图控制器将是第二个视图控制器的委托,这将允许第二个vc在其认为合适的时候在第一个vc上执行方法,对于这

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

我该如何实现这一目标


谢谢。

这类事情你应该使用代理,这里是第一个,但可以用谷歌搜索一些不同的。委派是一种关键的编码模式,所有iOS开发人员都应该知道它以及何时使用它


因此,在您的情况下,您的第一个视图控制器将是第二个视图控制器的委托,这将允许第二个vc在其认为合适的时候在第一个vc上执行方法,对于这种情况,我假设在第二个vc返回第一个视图控制器之前,您应该使用委托来执行此类操作,这里是第一个,但可以谷歌一些不同的。委派是一种关键的编码模式,所有iOS开发人员都应该知道它以及何时使用它


因此,在您的情况下,您的第一个视图控制器将是第二个视图控制器的代理,这将允许第二个vc在其认为合适的时候在第一个vc上执行方法,对于这种情况,我假设在第二个vc返回到第一个vc之前,最简单的方法是保留一些布尔属性(例如,
Bool firstbeen
)然后在viewDidLoad方法中用true初始化它,然后在ViewDidDisplay中:

if firstAppear {
  firstAppear = false
  return
}

最简单的方法是保留一些布尔属性(例如,
Bool firstbeen
),然后在viewDidLoad方法中用true初始化它,然后在ViewDidBeen中:

if firstAppear {
  firstAppear = false
  return
}

您可以使用ViewWillDisplay和ViewDidDisplay方法。他们不仅调用了一次,而且每次都会调用视图控制器。
viewDidLoad在加载视图控制器后仅调用一次

您可以使用ViewWillDisplay和ViewDidDisplay方法。他们不仅调用了一次,而且每次都会调用视图控制器。
VIEW Dead Load仅在视图控制器加载一次后

让我们考虑两个VC1和VC2 VIEW控制器。您现在在VC2中,并试图导航回。在VC2的视图中,尝试此代码

let defaults = NSUserDefaults.standardUserDefaults()
    defaults.setBool(true, forKey: "mykey")
现在您将导航回VC1。在VC1视图中将显示使用此代码

let defaults = NSUserDefaults.standardUserDefaults()
let mykey = defaults.boolForKey("mykey")
    if mykey {
        defaults.setBool(false, forKey: "mykey")
        //execute your code here
    }

让我们考虑两个VC1和VC2的VIEW控制器。您现在在VC2中,并试图导航回。在VC2的视图中,尝试此代码

let defaults = NSUserDefaults.standardUserDefaults()
    defaults.setBool(true, forKey: "mykey")
现在您将导航回VC1。在VC1视图中将显示使用此代码

let defaults = NSUserDefaults.standardUserDefaults()
let mykey = defaults.boolForKey("mykey")
    if mykey {
        defaults.setBool(false, forKey: "mykey")
        //execute your code here
    }

首先,您可以在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.")
}

首先,您可以在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.")
}