【问题标题】:UIstoryboard: Animates option for Modal segues is not available on iOS versions prior to 6.0UIstoryboard:Modal segues 的动画选项在 6.0 之前的 iOS 版本上不可用
【发布时间】:2014-02-12 09:57:47
【问题描述】:

我在使用 Xcode 5 并将部署目标设置为 iOS 5.0 时收到上述警告。

我不确定是直接忽略这些警告,还是找到为 iOS5 提供此功能的替代方法。

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

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

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

选项 2:将完全从情节提要中删除模态转场,在 IBAction 方法中调用任何转场

选项 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

并因此在故事板中使用它

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

【问题讨论】:

  • 你是如何设置你的segue的?问题不在于 segue 是模态的,而是动画。 iOS5 包含模态转场。
  • @Mikael,我有 5 个模态转场,所有动画选项都关闭了。因此,我假设警告出现是因为情节提要 xml 读取(例如)"" 而不是根本没有 animates="BOOL" 选项。
  • 我刚刚回答了。

标签: ios objective-c xcode5 uistoryboard


【解决方案1】:

造成此错误的是界面生成器中的动画复选框。如果你想摆脱它而不是为你的模态转场设置动画,你需要创建一个自定义转场并覆盖-(void) perform

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

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

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

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

【讨论】:

  • 谢谢,Mikael,我会检查一下;我假设在“创建自定义 Segue:+ segueWithIdentifier:source:destination:performHandler:”下它说“在 iOS 6.0 及更高版本中可用”它会在 iOS5 中引发错误。不确定您所说的覆盖 -(void) 执行是什么意思,但我会在检查后回复您。
  • 你不需要segueWithIdentifier:source:destination:performHandler:,你可以像普通的segue一样使用它。我将在我的答案中添加更多关于覆盖 -(void) perform 的详细信息
  • 感谢 Mikael,我想通了,然后看到了您的有用(已接受)编辑。我现在将研究适当的动画代码。仍然认为 presentViewController:animated:completion: 在 iOS5 中可用很奇怪,但编译器抱怨它的情节提要等效!
猜你喜欢
  • 2014-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-14
  • 2014-10-06
  • 2014-10-13
  • 2015-07-11
  • 2015-01-11
相关资源
最近更新 更多