有没有办法停止重新加载视图控制器,甚至点击推送segue的按钮?由于视图控制器可能有一些程序处理,可能需要一些时间,我不想再次重新加载该视图,并在用户单击导航到该视图时再次重新启动程序。
非常感谢帮助我。
答案 0 :(得分:2)
只有在启动应用时才需要运行的任何代码都可以放在appDidFinishLaunching:withOptions:
。
如果您的代码只需在应用程序启动的第一个时间内作为设置代码运行,然后只要应用程序仍然安装在设备上就再也无法运行,您仍然可以使用appDidFinishLaunching:withOptions:
,但是你需要加入一些逻辑来确定应用程序之前是否已经启动过。实现这一目标的最简单方法如下:
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"previouslyLaunched"]) {
// app already launched
} else {
[[NSUserDefaults standardUserDefaults] setBool:YES
forKey:@"previouslyLaunched"];
[[NSUserDefaults standardUserDefaults] synchronize];
// This is the first launch ever
}
编辑:您也可以将上述代码段应用于各个视图控制器。
但是作为注释,每次呈现视图时都不一定要调用视图控制器的viewDidLoad
方法。调用viewDidLoad
并将视图放入导航堆栈后,除非从导航堆栈中删除视图,然后需要将其放回导航堆栈,否则不会再次调用viewDidLoad
。
例如,使用导航控制器时,第一次显示第一个视图时,viewDidLoad
,viewWillAppear
和viewDidAppear
方法都会被调用。当您导航到导航控制器中的下一个视图时,然后返回到第一个视图,viewWillAppear
将再次调用viewDidAppear
,但不会再次调用viewDidLoad
。