我得到两个相同的根视图

时间:2012-07-11 10:51:27

标签: iphone ios ipad

我在iphone上测试我的应用程序,软件版本是4.2.1。我发现从客户启动视图控制器切换到rootview控制器时出现了一些问题。代码如下:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
 ....
launchViewController = [[[LaunchImageTransition alloc] initWithNibName:@"LaunchView_iphone" bundle:nil controller:self.viewController animation:UIModalTransitionStyleCrossDissolve] autorelease];

self.window.rootViewController = launchViewController;
 ....
}

在“LaunchImageTransition.m”中:

//do some initial work
[self presentModalViewController:self.rootViewController animated:YES];

rootViewController在“MainWindow.xib”中初始化。

当我在iphone模拟器上测试时,一切正常。但是当我在真实设备上测试时,我发现rootViewController的viewDidAppear方法被调用两次,而viewDidload方法被调用一次。这导致两个相同的视图。

我想知道为什么这只发生在真实设备上以及如何修复它?

1 个答案:

答案 0 :(得分:1)

我认为问题在于您正在使用视图系统,而不是认为它应该被使用的方式。我的建议是改变你提出意见的方式。

我不知道你是否必须以这种方式做到这一点,但我认为更好的方法是尽可能让rootViewController成为mainViewController。< / p>

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法结束时,您可以在mainViewController上将launchView呈现为模式。

    [mainViewController presentModalViewController: launchViewController animated:YES];

viewWillAppearMethod的{​​{1}}或viewDidAppearMethod,您可以解除mainViewController

launchViewController

我希望它有所帮助...