Minimal Deployment Target
如何在设置为 iOS 5.0的应用程序中支持 iOS6 的功能?
例如,如果用户有 iOS 5,他会看到一个UIActionSheet
,如果用户有 iOS 6,他会看到不同UIActionSheet
的 iOS 6?你怎么做到这一点?我有 Xcode 4.5 并且想要在 iOS 5 上运行的应用程序。
Minimal Deployment Target
如何在设置为 iOS 5.0的应用程序中支持 iOS6 的功能?
例如,如果用户有 iOS 5,他会看到一个UIActionSheet
,如果用户有 iOS 6,他会看到不同UIActionSheet
的 iOS 6?你怎么做到这一点?我有 Xcode 4.5 并且想要在 iOS 5 上运行的应用程序。
您应该始终更喜欢检测可用的方法/功能,而不是 iOS 版本,然后假设方法可用。
请参阅Apple 文档。
例如,在 iOS 5 中要显示一个模态视图控制器,我们会这样做:
[self presentModalViewController:viewController animated:YES];
在 iOS 6 中,presentModalViewController:animated:
方法UIViewController
是 Deprecated,你应该presentViewController:animated:completion:
在 iOS 6 中使用,但是你怎么知道什么时候使用呢?
您可以检测 iOS 版本并使用 if 语句指示您是使用前者还是后者,但是,这很脆弱,您会犯错,也许未来较新的操作系统会有新的方法来做到这一点。
处理这个问题的正确方法是:
if([self respondsToSelector:@selector(presentViewController:animated:completion:)])
[self presentViewController:viewController animated:YES completion:^{/* done */}];
else
[self presentModalViewController:viewController animated:YES];
您甚至可以争辩说您应该更加严格并执行以下操作:
if([self respondsToSelector:@selector(presentViewController:animated:completion:)])
[self presentViewController:viewController animated:YES completion:^{/* done */}];
else if([self respondsToSelector:@selector(presentViewController:animated:)])
[self presentModalViewController:viewController animated:YES];
else
NSLog(@"Oooops, what system is this !!! - should never see this !");
我不确定你的UIActionSheet
例子,据我所知这在 iOS 5 和 6 上是一样的。也许你正在考虑分享,如果你在 iOS 5 上UIActivityViewController
你可能想回退到一个,所以你UIActionSheet
可能会检查课程是否可用,请参阅此处如何操作。