2017-08-03 9 views
7

すべてのViewControllerでtabBarを使用したいと思います。私はSWRevealViewControllerを実装しています。これは、TabBarControllerとTabViewControllerの2つのView Controllerをリンクしています。私は、TableViewControllerからSeguesするすべてのViewControllerで同じtabBarを使用したいと考えています。SlideMenuViewControllerからインスタンス化するViewControllerでTabBarControllerを開く方法

enter image description here

+0

UITabBarでBaseClass viewControllerを実装し、次にBaseClassから他のすべてのコントローラを継承する必要があります。プログラム的にこのクラスのペン先やストーリーボードはありません。 –

+0

私はTableViewControllerでデリゲートとして使用しようとしています。そしてMainTabBarControllerでコールバックして、渡されたViewControllerをMainTabBarComtrollerに表示します。 – AsimRazaKhan

+0

ですので、定義どおりに正常に動作しています。あなたは、タブバー用のコントローラーまたはサイドメニューコントローラーだけを使用しますか? –

答えて

1

これはあまりにも難しいことではありません。あなたのRevealViewController(あなたのストーリーボードの初期コントローラ)は既にSWRevealViewControllerのサブクラスのようです。これは良いことですが、このシナリオでは本質的に必要ではありません。あなたが必要とするのは、サイドメニュー用のUIViewController実装です。ストーリーボードだけではできません。

また、セグに目的のビューコントローラがあるため、ここではセグを使用してタブを切り替えることはありません。したがって、セグを実行するたびに、ターゲットビューコントローラの新しいインスタンスを作成します。私はむしろ今のあなたは(実際にRearViewController)あなたのメニューとしてUIViewControllerまたはUITableViewControllerを作成しましょうUITableView

のセル選択を処理UIViewControllerを実装します。このクラスをストーリーボードのUITableViewControllerに割り当ててください。

class MenuViewController: UITableViewController { 
    // MARK: UITableViewDelegate 
    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
     let tabIndex = indexPath.row 
     let tabbarVC = (revealViewController().frontViewController as! UITabBarController) 

     tabbarVC.selectedIndex = tabIndex // this assumes the menu items are in the same order as the tabs. if not you need to adjust this 

     revealViewController().revealToggle(animated: true) // close the side menu after switching tabs 
    } 
} 

これは私がすべての私のViewControllersにタブバーを持ちたいあなたが

2

を必要とするすべてである必要があります。私は が1つにリンクされた2つのビューコントローラを持つSWRevealViewControllerを実装しました TableViewControllerからのすべてのViewControllerで同じtabBarを持っていたいと思うTabViewControllerと別のTableViewControllerです。

あなたは、このようないくつかの微調整を行うcustom delegateを作成し、SWRevealViewControllerTableViewControllerTabBarControllerdelegateを設定することができます。今、初めて開くと言うことができますTableViewControllerと任意のセル上のタップはその後、ちょうどSWRevealViewControllerクラス内で実行し、その後TabBarControllerを開き、ときTabBarControllerback buttonをクリックする必要があり、そのクラス内のsegueを実行する必要がありdelegateメソッドを呼び出したときに再びdelegateメソッドを呼び出しますSWRevealViewControllerクラス内で実行する必要がありますTableViewController

関連する問題