【问题标题】:View appears with modal view animation instead of show (push) animation视图以模态视图动画显示,而不是显示(推送)动画
【发布时间】:2015-09-09 10:40:37
【问题描述】:

我最近将我的应用从 iOS 8.3 更新到了 iOS 9。 在用代码修复了各种错误之后,当我注意到以下问题时,我设法编译并运行了应用程序。

当我执行 segue 点击时,例如,一个 UIButton,加载 segue 的视图会出现一个模态视图的动画(从底部滑动到顶部),但在情节提要中,segue 是 Show (e.g. Push) .此外,导航控制器的后退按钮不再出现。

当我执行 segue 时,控制台会打印:

Attempting to load the view of a view controller while it is deallocating is not allowed and may result in undefined behavior (<UISearchController: 0x7ffde14866b0>)

问题似乎只存在于一个视图中,在加载其他视图时,我尝试将其他视图设置为初始视图控制器并且一切正常。

【问题讨论】:

  • 请发布被调用的代码以向新的视图控制器呈现意外的动画。
  • @ndmeiri 实际上没有代码:我使用情节提要进行了转场。
  • 您的两个视图控制器是否在同一个故事板中?您是否确保该 Storyboard 中的 Initial View Controller 设置为 UINavigationController?
  • 是的,它们是,并且 NavigationController 现在设置为 Initial View Controller,但事情没有改变。如果在视图之前删除导航控制器,一切似乎都正常。
  • 我遇到了同样的问题。按照下面的建议删除备用导航控制器可以解决问题,但它似乎更像是一种解决方法而不是解决方案,persay。苹果开发者论坛上有很多人认为这可能是一个错误。 forums.developer.apple.com/thread/4201

标签: ios swift swift2


【解决方案1】:

查看项目中的 Storyboard 后,我发现问题是由于每次 Push segue 后额外的导航控制器造成的。也就是说,除了初始(根)导航控制器之外,Storyboard 还包含一个 UINavigationController 作为有问题的 Push segues 的目的地。移除这些额外的导航控制器(但保留根导航控制器)解决了这个问题。

【讨论】:

  • 我遇到了相同的控制台错误消息,但请注意以下几点:导航控制器的 segues 必须保留,因为它们与拆分视图控制器(到详细视图控制器)一起使用; (因此)代码不需要展开转场(代码还包括用于在父视图中设置值的块);并且控制台错误消息通过在viewDidLoad...[self.searchController loadViewIfNeeded]; 中使用以下代码行被抑制(可从 iOS 9 获得注释)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-31
相关资源
最近更新 更多