2017-01-24 4 views
-2

アプリ内のメニューにcollectionViewを使用しています。メニューにはナビゲーションコントローラがあるので、ユーザーはメニューに入っていることを知り、メニューとメニューから選択したページの間を前後に進むことができます。親navigationControllerを持つcollectionViewControllerのセルからSegue

私はcollectionViewを作成したので、実行時にセルが作成されるので、私は 'show' segueを使用できないようです。

インタフェース

enter image description here

ランタイム

enter image description here

まだこのメニューのナビゲーションバーを利用する方法はありますか?

以前は、各セルから目的のページまでsegueで静的なテーブルビューを使用していました。 Iveはそれぞれの名前のついた扇子に束縛されたコードを手に入れましたので、変更するのは嫌です。古いテーブルビュー

クラスMenuTableにseguesを使用して

enter image description here

コード:のUITableViewController {

weak var centerButtonDelegate: ManageCenterButtonDelegate? 

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

あなたはセグーをどこに呼びますか?そのコードを見ることはできますか? – John

+0

私はプログラマチックにセグをしたくありません。彼らは 'show' seguesとしてテーブルビューのセルから設定されました。私はtableViewを行っていたときに、私は代理関数を呼び出すprepareForSegue関数でいくつかのコードを持っています。それを示すために質問を編集してください。 – Pippo

+0

プログラムで設定することをお勧めします。制御がより簡単です。 – John

答えて

0

セルを選択またはタップ(またはしかし、あなたがこれを検出したい)され、次のビューコントローラを作成し、そのセルに適切にそれを設定し、showを呼び出します。

+0

ありがとうございます。私は、プログラム制御では.present、ナビゲーションコントローラではIBセグを使用しています。 – Pippo

1

私はあなたが新しいのViewControllerにUICollectionViewCellをリンクしている場合は、プログラムでセグエを実行すべきだと思います彼らはもっと簡単にコントロールすることができますし、ストーリーボードでも間違って設定することもできます。

あなたのtableViewデリゲートメソッド 'selectedRowAt:IndexPath'では、switch文を実行してそこでセグを実行する必要があります。このような何か:

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

これでページのナビゲーションバーが維持されますか? – Pippo

+0

はいこれはナビゲーションバーを維持する必要があります – John

関連する問題