2

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

 - (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方法被调用了一次。这导致两个相同的视图。</p>

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

4

1 回答 1

1

我认为问题在于您使用视图系统的方式不是人们认为应该使用的方式。我的建议是改变你表达观点的方式。

rootViewController我不知道你是否必须这样做,但我认为更好的方法是让mainViewController.

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

    [mainViewController presentModalViewController: launchViewController animated:YES];

viewWillAppearMethodviewDidAppearMethod上,mainViewController您可以关闭launchViewController

    -(void) viewWillAppear:(BOOL)animated{
        [super viewWillAppear:animated];
        [self dismissModalViewControllerAnimated:YES];
    }

我希望它有帮助...

于 2012-07-11T11:51:21.243 回答