2017-01-24 41 views
-2

我正在使用一個應用程序中的菜單使用collectionView。我希望菜單有一個導航控制器,以便用戶知道它們在菜單中,並且可以在菜單和從菜單中選擇的頁面之間前後移動。Segue從具有父級導航的collectionViewController中的單元格導航控制器

但是,因爲我創建了編程的collectionView,我似乎不能使用'show'segue,因爲單元格是在運行時創建的。

接口

enter image description here

運行

enter image description here

是否仍有利用此菜單的導航欄的方法嗎?

我以前使用靜態tableview與從每個單元格到所需的頁面segue。我有一堆代碼綁定到每個指定的segue,所以我不願意改變。使用塞格斯在舊的tableview

類MenuTable

enter image description here

代碼:的UITableViewController {

weak var centerButtonDelegate: ManageCenterButtonDelegate? 

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "segueTour" { 
     fadeOutDelegate() 
    } 
+0

你在哪裏叫segue?我們可以看到那個代碼嗎? – John

+0

我不想以編程方式繼續。他們從tableview單元格中設置爲'show'segues。當我使用tableView時,我在prepareForSegue函數中調用了一個委託函數。虐待編輯問題以顯示它。 – Pippo

+0

我建議你以編程方式設置它們,它們更容易控制。 – John

回答

0

當小區選擇或輕觸(或不過要檢測這一點),創建下一個視圖控制器,並適當地配置它到該小區,並調用show

+0

優秀的謝謝。我只用過編程方式存在,而IB則用於導航控制器等。 – Pippo

1

我想你應該編程執行SEGUE如果要鏈接一個UICollectionViewCell到一個新的ViewController ,它們更容易控制,也可能會讓你在故事板中設置錯誤。

在你的tableView委託方法'selectedRowAt:IndexPath'你應該做一個switch語句並在那裏執行segue。事情是這樣的:

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 
    switch indexPath.item { 
    case 0: 
     //perfrom segue 
     performSegue("mySegue", sender: self) 
    default: 
     break 
    } 
} 
+0

,這將保持我們繼續瀏覽的頁面上的導航欄? – Pippo

+0

是的,這應該保持導航欄 – John