- Xcode 8.3.3
- Swift 3.1
モーダルも以下コードで再現出来るので参考にして頂ければと。
import UIKit class TabViewController: UITabBarController, UITabBarControllerDelegate { class DummyViewController: UIViewController {} private var _Example1: UINavigationController! private var _Example2: UINavigationController! private var _Example3: UINavigationController! private var _Modal: DummyViewController! override func viewDidLoad() { super.viewDidLoad() self.view.backgroundColor = UIColor.white _Example1 = UINavigationController(rootViewController: Example1ViewController()) _Example2 = UINavigationController(rootViewController: Example2ViewController()) _Example3 = UINavigationController(rootViewController: Example3ViewController()) _Modal = DummyViewController() _Example1.tabBarItem = UITabBarItem(tabBarSystemItem: UITabBarSystemItem.featured, tag: 1) _Example2.tabBarItem = UITabBarItem(tabBarSystemItem: UITabBarSystemItem.featured, tag: 2) _Example3.tabBarItem = UITabBarItem(tabBarSystemItem: UITabBarSystemItem.featured, tag: 3) _Modal.tabBarItem = UITabBarItem(tabBarSystemItem: UITabBarSystemItem.featured, tag: 4) self.setViewControllers([_Example1!, _Example2!, _Example3!, _Modal!], animated: false) self.delegate = self } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool { if viewController is DummyViewController { let example = ExampleViewController() example.modalPresentationStyle = .overCurrentContext self.present(example, animated: false, completion: nil) return false } return true } }
これで_Modalに該当するアイテムをタップした時だけタブ内ではなく、ExampleViewControllerを重ねて表示します。
ExampleViewControllerの背景を黒透過にして白いレイヤを表示するよう制御すれば、モーダルを再現出来るかと🙆