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