想實(shí)現(xiàn)的效果如下
-
思路
- 創(chuàng)建控制器A、B避消、C,將B 和 C 添加為 A 的childViewController
- 將B 和 C的view 添加到 A的View上
- 將A的navigationItem的titleView 設(shè)置為SegmentControl
- 根據(jù)SegmentControl 的 selectedSegmentIndex來(lái)決定讓B 和 C哪個(gè)控制器的view顯示
關(guān)鍵代碼如下
//==========實(shí)例化 B C兩個(gè)控制器
let serverViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("ServerViewController") as! ServerViewController
let requireViewController = RequireListViewController_1_2()
//===========將 B C 兩個(gè)控制器 添加為當(dāng)前控制器的子控制器
addChildViewController(serverViewController)
addChildViewController(requireViewController)
//===========將 B C 兩個(gè)控制器的view 添加到當(dāng)前控制器的view上
view.addSubview(serverViewController.view)
view.addSubview(requireViewController.view)
requireViewController.view.hidden = false
serverViewController.view.hidden = true
//==========實(shí)例化segmentControl
let segmentControl = UISegmentedControl(items: ["需求","服務(wù)"])
segmentControl.frame = CGRectMake(0, 0, 134, 30)
//==========給segmentControl 添加監(jiān)聽(tīng)方法
segmentControl.addTarget(self, action: #selector(HomeSquareViewController.segmentControlValueChanged(_:)), forControlEvents: .ValueChanged)
//==========當(dāng)前控制器的titleView 設(shè)置segmentControl
navigationItem.titleView = segmentControl
//==========segmentControl 監(jiān)聽(tīng)的方法
@objc private func segmentControlValueChanged(sender:UISegmentedControl){
requireViewController.view.hidden = sender. selectedSegmentIndex != 0
serverViewController.view.hidden = sender. selectedSegmentIndex == 0
}