UIstoryboard:Modal segues的Animates选项在6.0之前的iOS版本上不可用

时间:2014-02-12 09:57:48

标签: ios objective-c xcode5 uistoryboard

我使用Xcode 5获得上述警告,部署目标设置为iOS 5.0。

我不确定是否只是忽略这些警告,或者找到为iOS5提供此功能的替代方法。

据我所知,我有许多不完美的解决方案:

选项1:以编程方式为iOS6 +呈现MainStoryboard;使用

替换iOS5的不同故事板上的模态segues
presentViewController:animated:completion:

选项2:将完全从故事板中删除模态segue,调用IBAction方法中的任何segue

选项3:忽略警告(应用程序仍会被接受吗?)。

(是的,我知道“仅限目标iOS6 +”)

我很感激那些找到解决这个问题的方法的建议。

更新:感谢Mikael的回答如下: 我将UIStoryboardSegue子类化如下

#import "StandardModalSegue.h"

@implementation StandardModalSegue
- (void) perform {
    //my conditional version of NSLog()
    myLog(kLogVC, 2, @"%@ to %@",self.sourceViewController ,self.destinationViewController);
    //iOS5 replacement for presentModalViewController:animated:
    [self.sourceViewController presentViewController:self.destinationViewController animated:YES completion:nil];
}
@end

并在故事板中使用它

enter image description here

PS:接受Mikael的回答,这是为了帮助像我这样的新手!

1 个答案:

答案 0 :(得分:1)

它是界面构建器中创建此错误的动画复选框。如果你想摆脱它并且没有为你的模态segue制作动画,你需要创建一个自定义的segue并覆盖-(void) perform

您所要做的就是保留现有的segue,但要将它们设置为自定义。然后创建UIStoryboardSegue的子类。在您执行的实现文件中:

- (void)perform
{
// Add your own animation code here.

    [[self sourceViewController] presentModalViewController:[self destinationViewController] animated:NO];
}

然后您可以像任何其他segue一样使用此segue。如果它附加到UIButton,它会自动调用,您不需要performSegue。如果不是,您可以使用与iOS5兼容的performSegue,甚至可以根据操作系统的版本选择performSegue。