2017-08-02 75 views
2

我在每个单元格上都有一个表格视图和集合视图。
当我点击单元格时,将在单元格的didSelectRowAt:IndexPath方法中调用以下代码。为什么推动另一个视图控制器的动画不平滑?

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 

     navigationController?.pushViewController(anotherViewController(), animated: true) 

    } 

anotherViewController现在是故事板上的空视图控制器。它只在viewDidLoad()中打印“我来了”。
这里是问题: 当我触摸细胞,推动画似乎卡住了,请认真检查下面的GIF。
我真的很困惑发生了什么。
随时给任何建议。

下图显示了视图层次结构。
表格视图上的单元格。
收集视图和单元格内容视图上的其他组件。
最后,集合视图的内容视图上的图像视图。

View Hierarchy

+0

你有没有尝试设置动画为真,看到效果? – 3stud1ant3

+0

检查你在下一个viewcontroller的'viewDidLoad'和'viewWillAppear'方法中做了什么。 –

+0

@ user1000对不起,GIF显示动画,这正是我的问题。我试图将动画设置为false以查看可能发生的情况。正如你可以想象的那样,问题已经消失,因为没有动画.....我忘了把它改回来。我已经改变它为真,谢谢。 – JsW

回答

1

我怀疑问题在于在anotherViewController()参考。我甚至能够重现问题,当我推到了一个UIViewController实例:

navigationController?.pushViewController(UIViewController(), animated: true) 

但是,当我实例化一个场景从一个故事板,这工作得很好。显然,你需要一个场景相应的故事板标识符:

let controller = storyboard!.instantiateViewController(withIdentifier: "Details") 
navigationController?.pushViewController(controller, animated: true) 

或者,如果我两个视图控制器之间定义SEGUE和执行SEGUE,也努力:

performSegue(withIdentifier: "DetailsSegue", sender: self) 
+0

谢谢,我会尝试第一种方法。 – JsW

+0

它的工作原理!谢啦。 – JsW

+0

我想简单地调用'UIViewController()'不会正确初始化控制器。 GIF显示目标视图控制器的背景颜色是全黑的。但从故事板初始化的视图控制器具有白色背景色。谢谢你。你帮了我很多。 – JsW

相关问题