前提・実現したいこと
TabBarControllerとNavigationControllerを組み合わせた際の画面遷移について教えて下さい。
実現したいことは、下部のタブを残した状態で次の画面に遷移をさせたいです。
segueによる画面遷移を試したところ、次の画面がモーダル表示になってしまい
下部のタブが見えない状態になってしまいます。
試したことを記載しますが、解決にまで至らなかったので
ご教示頂けると幸いです。宜しくお願い致します。
発生している問題・エラーメッセージ
画面遷移時に、画面遷移先がモーダル表示になってしまい下部のタブが見えなくなる
該当のソースコード
Swift
1import UIKit 2 3class ChartsMenuViewController: UIViewController { 4 5 @IBOutlet weak var tableView: UITableView! 6 7 private let viewModel = ChartsMenuViewModel() 8 9 override func viewDidLoad() { 10 super.viewDidLoad() 11 12 self.configureTableView() 13 } 14 15 private func configureTableView() { 16 17 self.tableView.dataSource = self 18 self.tableView.delegate = self 19 self.tableView.rowHeight = 150 20 } 21} 22 23extension ChartsMenuViewController:UITableViewDataSource { 24 25 //MARK: UITableView DataSource method 26 27 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 28 29 return self.viewModel.getChartsMenuComponentsCount() 30 } 31 32 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 33 34 let component = self.viewModel.getChartsMenuComponent(row: indexPath.row) 35 let cell = tableView.dequeueReusableCell(withIdentifier: "ChartsMenuCell", for: indexPath) as! ChartsMenuCell 36 cell.configure(component: component) 37 38 return cell 39 } 40} 41 42extension ChartsMenuViewController:UITableViewDelegate { 43 44 //MARK: UITableView Delegate method 45 46 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 47 48 tableView.deselectRow(at: indexPath, animated: true) 49 50 let component = self.viewModel.getChartsMenuComponent(row: indexPath.row) 51 switch component { 52 case .pie: 53 //ここでタブを残した状態で次画面に遷移したい 54 let storyboard = UIStoryboard(name: "Main", bundle: nil) 55 let pieVC = storyboard.instantiateViewController(withIdentifier: "pieVC") 56 self.tabBarController?.navigationController?.present(pieVC, animated: true, completion: nil) 57 58 //self.performSegue(withIdentifier: "PieChart", sender: nil) 59 case .bar: 60 self.performSegue(withIdentifier: "BarChart", sender: nil) 61 case .line: 62 self.performSegue(withIdentifier: "LineChat", sender: nil) 63 } 64 } 65}
画面構成
試したこと
- segueによる画面遷移 -> モーダル表示になってしまう
- こちらを参考にした上記のコード -> 画面遷移しない
補足情報(FW/ツールのバージョンなど)
遷移先のViewContorollerのStoryboardIDはpieVCを指定してあります
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/02 00:02