0

私は自分のiPhone「タブ付きアプリケーション」のナビゲーションを作成しようとしていますが、これは明らかにサイドメニューを表示するためにUITabBarControllerSWRevealViewControllerです。私のアプリケーションでUITabBarControllerのtabBarItemを非表示にしながら関連するビューを表示できるようにしながら

すべてのビューUITabBarControllerと表示さUINavigationBarの両方を持っている必要があります、しかし、(SWRevealViewControllerで扱う)左側のメニューに表示されるリンクはUITabBarControllerに現れてはなりません。

私の左側のメニューのリンクは、このように処理されます。

import UIKit 

class MenuTableViewController: UITableViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.clearsSelectionOnViewWillAppear = false 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
     let selectedIndex = (indexPath as NSIndexPath).row + 1 // hardcoded for time being 
     let tabBarController = revealViewController().frontViewController as! UITabBarController 

     let navController = tabBarController.viewControllers![selectedIndex] as! UINavigationController 
     navController.popToRootViewController(animated: true) 

     tabBarController.selectedIndex = selectedIndex 
     revealViewController().pushFrontViewController(tabBarController, animated: false) 
    } 
} 

は今、私は次のように私のUITabBarControllerに表示したくないのビューのいずれかのリンクを削除しようとしました。

import UIKit 

class TabBarController: UITabBarController { 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     let index = 2 // hardcoded for time being 
     viewControllers?.remove(at: index) 
    } 
} 

が、私は今、左側のメニューに関連するリンクをクリックした場合(私はUITabBarControllerから特定のtabBarItemを削除するので、もちろん)、私はNSRangeException index 2 beyond bounds [0 .. 1]エラーを取得します。

私の質問は:UITabBarControllerからアイテムを「隠す」ことができますが、私のサイドメニューからそれを参照できる(そして開くことができます)のはどうですか?現時点では

UPDATE
私の絵コンテは、このようになります:enter image description here

+0

だから...あなたは 'A' 'B' 'C'タブとタブバーコントローラを持っている...現在のタブが 'B'である...あなたも持っていますメニューの 'D''''''''''''''''''' G''メニューのメニューは' 'E''をタップします。何が起こるはずですか?現在のタブ 'B'は' E'で*置き換えられますか?あるいは 'A-B-C'タブは' A-B-C-E'になりますか? – DonMag

+0

「A」「B」「C」「D」「E」という意見があるとします。 TabBarに 'A''B''C'、サイドメニューに' D''E'を表示したいのです。しかし、 'D'と' E'の両方がいったんオープンするとTabBarが見えるようにする必要があります。私のストーリーボードでは、すべてのビューがTabBarコントローラに接続されているため、TabBarが表示されます。最初は間違ったアプローチですか? – errata

答えて

1

それは、タブを操作するための「メニュー」を使用することはおそらく良い考えではありません - それはAppleがもっと設計したものです...と編集...の機能があります。

あなたの全体的な設計/ナビゲーション/ユーザーエクスペリエンスの流れに応じて、2合理的なオプションは次のようになります。

  1. 代わりに「キャンセル」またはで現在選択されているタブ、.presentモーダルビューコントローラを交換します」 「保存」または「完了」ボタンを.dismissに変更してください(適切なもの)。

  2. 各タブのViewControllerがNavigationControllerであると記述しているので、メニュー選択のビューコントローラを現在のスタックに配置することができます。.push次に、あなたのインターフェイスは、標準の "<戻る"ボタンのナビゲーションを使用することができます。

グッドラック:)

+0

Brilliant!明確にしてくれてありがとう! – errata

関連する問題