将 UIViewController 推送到 UINavigationController 时动画挂起
Posted
技术标签:
【中文标题】将 UIViewController 推送到 UINavigationController 时动画挂起【英文标题】:Animation hangs when pushing UIViewController to UINavigationController 【发布时间】:2016-07-10 20:32:05 【问题描述】:我有一个完全用代码创建的自定义 UITableViewCell。这个项目根本不使用自动布局,所有的绘图都是在代码中完成的。当用户点击我的自定义单元格中的按钮时,它会调用 UITableViewController 实现的委托,然后将新的视图控制器推送到导航控制器。它工作得很好,但是当它过渡时,动画会冻结一半,然后像这个 gif 中所见的那样一次全部转入。 我曾使用故事板参与过项目,并且知道它不应该是这样的。我试过使用 dispatch_after 和 dispatch_async 导致相同的结果。这是我正在使用的代码。
let vc = UIViewController()
self.navigationController!.pushViewController(vc, animated: true)
如何修复这个错误?提前感谢您的帮助!
【问题讨论】:
无法查看 gif,请转发或修改权限。或者,更好的是,使用编辑器中的图片上传器来内联它。 感谢您告诉我!我将 gif 移到内联 你没有给我们足够的信息。您是否使用自定义推送/弹出动画?我们无法按现状复制它。 没有自定义推送/弹出动画。我实际上只是从 UITableViewController 调用这两行代码,这正是为什么这个错误一直困扰我几个小时。 【参考方案1】:这个错误很奇怪,无法理解,但是在显示的 viewController 的 viewDidLoad 中插入以下代码行修复了它。
self.view.backgroundColor = UIColor.whiteColor()
【讨论】:
【参考方案2】:如果被推送的视图控制器是 UITableViewController 并且表格视图在生命周期中的某个时间点被隐藏,也会发生这种情况。
在被覆盖的viewWill...
或viewDid...
方法之一中查找tableView.isHidden = true
并删除该行。
【讨论】:
以上是关于将 UIViewController 推送到 UINavigationController 时动画挂起的主要内容,如果未能解决你的问题,请参考以下文章
将 UIBarButtonItem 添加到 UIViewController 推送到 UINavigation 控制器
将 UIViewController 推送到导航堆栈时如何显示选项卡栏
将不同方向的 UIViewController 推送到上一个
从弹出窗口将 UIViewController 推送到 UINavigationController
将 UIViewController 推送到 UINavigationController(也在 UITabBarController 中)