私は自分のiPhone「タブ付きアプリケーション」のナビゲーションを作成しようとしていますが、これは明らかにサイドメニューを表示するためにUITabBarController
とSWRevealViewController
です。私のアプリケーションで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
からアイテムを「隠す」ことができますが、私のサイドメニューからそれを参照できる(そして開くことができます)のはどうですか?現時点では
だから...あなたは 'A' 'B' 'C'タブとタブバーコントローラを持っている...現在のタブが 'B'である...あなたも持っていますメニューの 'D''''''''''''''''''' G''メニューのメニューは' 'E''をタップします。何が起こるはずですか?現在のタブ 'B'は' E'で*置き換えられますか?あるいは 'A-B-C'タブは' A-B-C-E'になりますか? – DonMag
「A」「B」「C」「D」「E」という意見があるとします。 TabBarに 'A''B''C'、サイドメニューに' D''E'を表示したいのです。しかし、 'D'と' E'の両方がいったんオープンするとTabBarが見えるようにする必要があります。私のストーリーボードでは、すべてのビューがTabBarコントローラに接続されているため、TabBarが表示されます。最初は間違ったアプローチですか? – errata