我的代码中存在一个问题,即在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>.
有什么想法吗?
答案 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