presentModalViewController for 4.3支持警告

时间:2013-02-17 17:44:02

标签: xcode viewcontroller presentmodalviewcontroller

我的代码中存在一个问题,即在iOS 4.3及更高版本中包含presentModalViewController。

我使用以下代码在iOS版本支持时使用presentModalViewController和presentViewController。(摘自@Stackoverflow帖子)

 if([self respondsToSelector:@selector(presentViewController:animated:completion:)])
    [self presentViewController:myView animated:YES completion:^{/* done */}];
else if([self respondsToSelector:@selector(presentViewController:animated:)])
    [self presentModalViewController:myView animated:YES];
else
    NSLog(@"Oooops, what system is this !!! - should never see this !");

当我在> 5.0和< 5.0中测试它时,上述工作很有用。但在我的AppDelegate.m中,我有一个检查例程,它检测应用程序是否第一次运行。

如果是,则首先打开一个视图,与启动视图不同。

if (![defaults boolForKey:@"everLaunched"]) {
    //NSLog(@"First run");
if([self.viewController respondsToSelector:@selector(presentViewController:animated:completion:)])
        [self.viewController presentViewController:infoView animated:YES completion:^{/* done */}];
    else if([self.viewController respondsToSelector:@selector(presentViewController:animated:)])
       [self.viewController presentModalViewController:infoView animated:YES];
    else
        NSLog(@"1Oooops, what system is this !!! - should never see this !");

}

显然它正在运行,但我第一次启动应用时会收到警告,我担心它会在各种设备中出现意外错误

Unbalanced calls to begin/end appearance transitions for <ViewController: 0x689da90>.

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

可能处于第二个条件你应该要求响应presentModalViewController而不是presentViewController

你的代码

if([self respondsToSelector:@selector(presentViewController:animated:completion:)])
    [self presentViewController:myView animated:YES completion:^{/* done */}];
else if([self respondsToSelector:@selector(**presentViewController:animated**:)])
    [self presentModalViewController:myView animated:YES];
else