2017-08-02 51 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

相關問題