Edited at

swiftでUITabBarの特定のタブをタップした時にモーダル

More than 3 years have passed since last update.

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/