我正在尝试让我的应用程序同时适用于iOS7和iOS8,但我在视图控制器中的prepareForSegue方法中遇到了问题。
在 iOS8 中,segue.destinationViewController
属于 UINavigationController 类,所以我使用[[segue.desinationViewController viewControllers] objectAtIndex:0]
它工作正常,但在 iOS7 中segue.desinationViewController
属于 CMAMyViewControllerClassName 类,当我尝试向其发送viewContollers
消息时,这显然会抛出错误。
我找到了这个可行的解决方案,但我想知道是否有更好的解决方案?除了后一篇文章,我找不到任何关于它的信息。如果没有"合适的"解决方案,我将创建一个获取正确视图控制器的方法;我只是想知道其他人如何处理这种情况。
谢谢!
此问题通过在尝试访问目标视图控制器之一属性之前检查其类来解决:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
DestController *vc = segue.destinationViewController;
if ([dvc isKindOfClass:[DestController class]])
dvc.propertyName = @"Property Value";
else
// do something else
}
取自此线程中的解决方案。