我在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方法被调用一次。这导致两个相同的视图。
我想知道为什么这只发生在真实设备上以及如何修复它?
答案 0 :(得分:1)
我认为问题在于您正在使用视图系统,而不是认为它应该被使用的方式。我的建议是改变你提出意见的方式。
我不知道你是否必须以这种方式做到这一点,但我认为更好的方法是尽可能让rootViewController
成为mainViewController
。< / p>
在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
方法结束时,您可以在mainViewController上将launchView呈现为模式。
[mainViewController presentModalViewController: launchViewController animated:YES];
在viewWillAppearMethod
的{{1}}或viewDidAppearMethod
,您可以解除mainViewController
。
launchViewController
我希望它有所帮助...