swift3.0에서 tabBar간에 이벤트 전달

5112 단어 Swift3.0
탭을 탭하여 이벤트를 줍는 경우가 아니라 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) {
        // 処理
    }

좋은 웹페이지 즐겨찾기