storyboardを分割して、コード上から、既表示のViewControllerをremove、segmentedControlで選択されたViewControllerを、addSubviewするように変更。
とりあえず動くことは確認できたので解決済みに変更。
↓動きを確認したコピペコード
swift
1import UIKit
2
3class ViewController: UIViewController {
4
5 // Mark: - Outlets/ContainerView -
6 @IBOutlet weak var containerView: UIView!
7 @IBOutlet weak var blueContainerView: UIView!
8 @IBOutlet weak var greenContainerView: UIView!
9 @IBOutlet weak var yellowContainerView: UIView!
10 //var containersArray = [UIView]()
11
12 // Mark: - Outlets/UIButton -
13 @IBOutlet weak var chengeSelectSwViewAppearanceBtn: UIButton!
14 @IBOutlet weak var changeSwSC: UISegmentedControl!
15 // Mark: - Outlets/Constraints -
16 @IBOutlet weak var selectSwViewAppear: NSLayoutConstraint!
17 @IBOutlet weak var selectSwViewDisappear: NSLayoutConstraint!
18
19 //var presentContainerView: Int = 0
20
21 var blueController: BlueViewController?
22 var greenController: GreenViewController?
23 var yellowController: YellowViewController?
24
25
26 // Mark: - LifeCycle -
27 override func viewDidLoad() {
28 super.viewDidLoad()
29
30 blueController = createViewController(SCIndex: 0, containerTitle: "Blue") as? BlueViewController
31 displayContentController(content: blueController!, container: containerView)
32
33 }
34
35 override func didReceiveMemoryWarning() {
36 super.didReceiveMemoryWarning()
37 // Dispose of any resources that can be recreated.
38 }
39
40 func createViewController(SCIndex: Int, containerTitle: String) -> UIViewController {
41 var returnController: UIViewController?
42 switch SCIndex {
43 case 0:
44 let sb: UIStoryboard = UIStoryboard(name: "BlueViewController", bundle: nil)
45 let controller: BlueViewController =
46 sb.instantiateInitialViewController() as! BlueViewController
47 controller.containerTitle = containerTitle
48 returnController = controller
49 case 1:
50 let sb: UIStoryboard = UIStoryboard(name: "GreenViewController", bundle: nil)
51 let controller: GreenViewController =
52 sb.instantiateInitialViewController() as! GreenViewController
53 controller.containerTitle = containerTitle
54 returnController = controller
55 case 2:
56 let sb: UIStoryboard = UIStoryboard(name: "YellowViewController", bundle: nil)
57 let controller: YellowViewController =
58 sb.instantiateInitialViewController() as! YellowViewController
59 controller.containerTitle = containerTitle
60 returnController = controller
61 default: break
62 }
63 return returnController!
64 }
65
66
67 func displayContentController(content: UIViewController, container: UIView) {
68 addChildViewController(content)
69 content.view.frame = container.bounds
70 container.addSubview(content.view)
71 content.didMove(toParentViewController: self)
72 }
73
74 func hideContentController(content: UIViewController) {
75 content.willMove(toParentViewController: self)
76 content.view.removeFromSuperview()
77 content.removeFromParentViewController()
78 }
79
80 /*
81 func hideContentController() {
82 var content: UIViewController?
83 switch presentContainerView {
84 case 0: content = blueController!
85 case 1: content = greenController!
86 case 2: content = yellowController!
87 default: break
88 }
89 content?.willMove(toParentViewController: self)
90 content?.view.removeFromSuperview()
91 content?.removeFromParentViewController()
92 }
93 */
94
95 // Mark: - Action/SegmentControl -
96 @IBAction func selectVcSegmentControlTapped(_ sender: UISegmentedControl) {
97
98 hideContentController(content: childViewControllers.first!)
99
100 print(childViewControllers)
101 if let topController = UIApplication.topViewController() {
102 print("topController:",topController)
103 }
104
105 switch sender.selectedSegmentIndex {
106 case 0 : //containerView.bringSubview(toFront: blueContainerView)
107 //hideContentController()
108 blueController = createViewController(SCIndex: 0, containerTitle: "Blue") as? BlueViewController
109 displayContentController(content: blueController!, container: containerView)
110 case 1 : //containerView.bringSubview(toFront: greenContainerView)
111 //hideContentController()
112 greenController = createViewController(SCIndex: 1, containerTitle: "Green") as? GreenViewController
113 displayContentController(content: greenController!, container: containerView)
114 case 2 : //containerView.bringSubview(toFront: yellowContainerView)
115 //hideContentController()
116 yellowController = createViewController(SCIndex: 2, containerTitle: "Yellow") as? YellowViewController
117 displayContentController(content: yellowController!, container: containerView)
118 default: break
119 }
120 //presentContainerView = sender.selectedSegmentIndex
121 changeApperanceOfSCView()
122 }
123
124 // Mark: - Action/BtnTapped -
125
126 @IBAction func chengeSelectSwViewAppearanceBtnTapped(_ sender: UIButton) {
127 changeApperanceOfSCView()
128 }
129
130 func changeApperanceOfSCView() {
131 if selectSwViewAppear.isActive == true {
132 selectSwViewAppear.isActive = false
133 selectSwViewDisappear.isActive = true
134 chengeSelectSwViewAppearanceBtn.setTitle("▼", for: .normal)
135 } else {
136 selectSwViewDisappear.isActive = false
137 selectSwViewAppear.isActive = true
138 chengeSelectSwViewAppearanceBtn.setTitle("▲", for: .normal)
139 }
140 UIView.animate(withDuration: 0.5, animations: { self.view.layoutIfNeeded() }, completion: nil)
141 }
142
143 // MARK: - Segue -
144
145}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。