タブをタップしてイベントを拾う場合ではなく、View上のコントローラをタップした時に自動的にタブを移動してかつ移動した先の画面でイベントを発火させたい場合のメモです。
■環境
- swift3.0
- tabBarController
- tableView
たぶ1ViewController.swift
// セルがタップされた時
func tableView(_ table:UITableView, didSelectRowAt indexPath:IndexPath) {
// タブを切り替える
self.tabBarController?.selectedIndex = 1
}
tabBarController.swift
protocol TabBarDelegate {
func didSelectTab(tabBarController: UITabBarController)
}
class baseTabBarController: UITabBarController, UITabBarControllerDelegate {
@IBOutlet weak var myTabBar: UITabBar!
override var selectedIndex: Int{
// タブ切り替え時に処理を行うため
didSet {
self.delegate?.tabBarController?(self, didSelect: self.viewControllers![selectedIndex])
}
}
override func viewDidLoad() {
super.viewDidLoad()
self.delegate = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
if viewController is TabBarDelegate {
let v = viewController as! TabBarDelegate
v.didSelectTab(tabBarController: self)
}
}
}
たぶ2ViewController.swift
func didSelectTab(tabBarController: UITabBarController) {
// 処理
}