shouldSelectViewControllerで押せれたタブに紐付くViewControllerが特定のViewControllerであった場合に、タブの切り替えを行わずにモーダルを出す。
StoryBoardを使っている前提です。
SampleTabBarControllerをStoryBoard上のTabBarControllerに紐付けます。
SampleTabBarController.swift
class SampleTabBarController: UITabBarController, UITabBarControllerDelegate {
func tabBarController(tabBarController: UITabBarController, shouldSelectViewController viewController: UIViewController) -> Bool {
if viewController is DummyViewController {
// DummyViewControllerはモーダルを出したい特定のタブに紐付けたViewController
if let currentVC = self.selectedViewController{
//表示させるモーダル
let modalViewController: UIViewController = UIViewController()
//わかりやすく背景を赤色に
modalViewController.view.backgroundColor = UIColor.redColor()
currentVC.presentViewController(modalViewController, animated: true, completion: nil)
}
return false
}
return true
}
override func viewDidLoad() {
super.viewDidLoad()
self.delegate = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
モーダルを出したいタブに紐付けられたViewController(DummyViewController)はダミー。
もっとスマートな方法は無いのかしら?
参考URL
http://blog.ryotarai.info/blog/2011/08/17/uitabbar-modal-view/