0

我有一个由两个视图控制器组成的 iPhone 应用程序;一个主要的,一个带有帮助屏幕的。每个都有一个按钮,可以执行从一个到另一个的 segue。

我遇到的问题是,当我从帮助屏幕回到主屏幕时,主视图控制器的 viewDidLoad 方法被调用,所以我在应用程序第一次启动时所做的所有初始化都会重复。视图控制器中是否有另一种方法只被调用一次,我可以在哪里进行初始化?

我的第一个想法是,“有一个最初设置为 false 的布尔变量,然后让 viewDidLoad 对其进行测试,如果它是 false,则进行初始化,然后将其设置为 true” - 但是如何在第一名?

4

2 回答 2

2

我的猜测是您正在执行“推送”转场(这是在 iOS 应用程序中可以执行的最标准的转场),如果您使用“推送”转场,则意味着您的导航控制器中有一个应用程序。

最好的办法是不要将另一个“主”视图控制器推送到其他视图控制器的堆栈上(这就是为什么viewDidLoad每次推送主视图时都会看到“”调用),而是当您单击“执行”时到帮助屏幕中的“主”按钮,弹出帮助屏幕并返回上一个。执行此操作的调用是 UINavigationController 的popViewControllerAnimated方法。

这样做意味着viewDidLoad该视图控制器上的“”只被调用一次,因为主视图被加载一次。

于 2013-02-15T21:29:08.003 回答
1

在 .m 类文件上创建一个布尔值@implementaition

@implementation yourClass{

    bool initialize = 0;
}

然后在视图上测试它确实加载:

-(void)viewDidLoad{

    if(initialize == 0){

    //do everything you need to do

    initialize = 1;

    }
}

我认为它会工作...

于 2013-02-15T21:28:53.780 回答