質問編集履歴
2
コードを差し替えました。View間の構造のスクショを載せました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -4,46 +4,28 @@
|
|
4
4
|
|
5
5
|
|
6
6
|
|
7
|
-
A、Bという2つの画面があり、A画面内のボタンを押すと、
|
8
|
-
|
9
|
-
|
7
|
+
「Top画面」という画面の上に、containerViewを配置し、
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
8
|
+
|
14
|
-
|
15
|
-
|
9
|
+
containerViewの上にViewを配置しています。
|
16
|
-
|
10
|
+
|
11
|
+
|
12
|
+
|
17
|
-
|
13
|
+
Top画面に対して、クラス:ViewControllerを割り当てています。
|
14
|
+
|
18
|
-
|
15
|
+
![イメージ説明](4de89470ec31d3689f323855d752dd85.png)
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
-
|
19
|
+
Top画面の配下のViewの、さらに配下のCotainerAに、
|
20
|
-
|
20
|
+
|
21
|
-
|
21
|
+
下記の「冷蔵庫画面」を配置していて、クラス:cabinViewControllerを設定しています。
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
|
25
|
-
![
|
23
|
+
![イメージ説明](fc13ce6538de8093cd52d02c0b378594.png)
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
A画面のクラス:viewControllerA
|
32
|
-
|
33
|
-
B画面のクラス:viewControllerB
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
上記を、delegateを使って実装したいため、
|
38
|
-
|
39
|
-
A画面のボタンを押したら、viewControllerBでtableViewを更新する処理を実現したいです。
|
40
24
|
|
41
25
|
|
42
26
|
|
43
27
|
※delegateについての私の理解(間違いありましたらご指摘ください)
|
44
28
|
|
45
|
-
|
46
|
-
|
47
29
|
delegateとは、自分のクラスの処理内容を他のクラスに実行してもらう(移譲する)こと。
|
48
30
|
|
49
31
|
下記の実装が必要。
|
@@ -86,11 +68,11 @@
|
|
86
68
|
|
87
69
|
|
88
70
|
|
89
|
-
②viewController
|
71
|
+
②CabinviewController(冷蔵庫画面)
|
90
72
|
|
91
73
|
```swift
|
92
74
|
|
93
|
-
class CabinViewController:UIViewController, UITableViewDelegate, UITableViewDataSource, ReloadDataDelegate {
|
75
|
+
class CabinViewController:UIViewController, UITableViewDelegate, UITableViewDataSource, UINavigationControllerDelegate,ReloadDataDelegate {
|
94
76
|
|
95
77
|
|
96
78
|
|
@@ -126,24 +108,30 @@
|
|
126
108
|
|
127
109
|
|
128
110
|
|
129
|
-
③
|
111
|
+
③ViewController(TOP画面)
|
130
112
|
|
131
113
|
```swift
|
132
114
|
|
133
|
-
class ViewController: UIViewController, {
|
115
|
+
class ViewController: UIViewController, UINavigationControllerDelegate {
|
134
116
|
|
135
117
|
|
136
118
|
|
137
119
|
var delegate:ReloadDataDelegate!
|
138
120
|
|
139
|
-
|
140
|
-
|
121
|
+
|
122
|
+
|
141
|
-
|
123
|
+
// MARK: - ContainerView
|
142
|
-
|
143
|
-
@IBOutlet weak var containerView: UIView!
|
144
124
|
|
145
125
|
var containers:Array<UIView>=[]
|
146
126
|
|
127
|
+
@IBOutlet weak var containerA: UIView!
|
128
|
+
|
129
|
+
@IBOutlet weak var containerB: UIView!
|
130
|
+
|
131
|
+
@IBOutlet weak var containerC: UIView!
|
132
|
+
|
133
|
+
|
134
|
+
|
147
135
|
|
148
136
|
|
149
137
|
override func viewDidLoad() {
|
@@ -152,13 +140,11 @@
|
|
152
140
|
|
153
141
|
|
154
142
|
|
155
|
-
let
|
143
|
+
let cabinVC = CabinViewController()
|
156
|
-
|
144
|
+
|
157
|
-
self.delegate =
|
145
|
+
self.delegate = cabinVC
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
146
|
+
|
147
|
+
|
162
148
|
|
163
149
|
containers=[containerA,containerB,containerC]
|
164
150
|
|
@@ -170,26 +156,24 @@
|
|
170
156
|
|
171
157
|
~(中略)~
|
172
158
|
|
173
|
-
//MARK:- segmentBarの値に応じて、
|
159
|
+
//MARK:- segmentBarの値に応じて、containerViewの表示を切り替え
|
174
160
|
|
175
161
|
@IBAction func SegmentAction(_ sender: UISegmentedControl) {
|
176
162
|
|
177
|
-
|
163
|
+
|
178
|
-
|
179
|
-
|
180
164
|
|
181
165
|
let currentContainerView=containers[sender.selectedSegmentIndex]
|
182
166
|
|
183
167
|
containerView.bringSubviewToFront(currentContainerView)
|
184
168
|
|
185
|
-
|
186
|
-
|
187
169
|
}
|
188
170
|
|
189
171
|
|
190
172
|
|
191
173
|
~(中略)~
|
192
174
|
|
175
|
+
//NavigationBarのボタン
|
176
|
+
|
193
177
|
@IBAction func templateButton(_ sender: Any) {
|
194
178
|
|
195
179
|
reload()
|
@@ -214,9 +198,7 @@
|
|
214
198
|
|
215
199
|
### 試したこと
|
216
200
|
|
217
|
-
実行すると、reloadTabeleDate()内の、
|
218
|
-
|
219
|
-
"test"の出力がされることは確認しています。
|
201
|
+
実行すると、reloadTabeleDate()内の、"test"の出力がされることは確認しています。
|
220
202
|
|
221
203
|
|
222
204
|
|
1
A画面とB画面の関係性を追記しました。B画面を表示している処理を追記しました。コードの誤りを修正しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -10,6 +10,24 @@
|
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
+
(追記)
|
14
|
+
|
15
|
+
A画面の上に、Viewがあり、このViewの下に、ContentViewBがあります。
|
16
|
+
|
17
|
+
ContentViewBに対して、ViewControllerBを設定しています。
|
18
|
+
|
19
|
+
(名前がわかりづらくなってしまっていますが、ContainerA~Cのうち、
|
20
|
+
|
21
|
+
ContainerAに設定しているクラスをviewControllerBとして質問を書いています)
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
![![イメージ説明](59b57ac798e6f7d819d245035f6f2818.png)](24d374ba135c20cb149c090afcf450da.png)
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
|
13
31
|
A画面のクラス:viewControllerA
|
14
32
|
|
15
33
|
B画面のクラス:viewControllerB
|
@@ -80,12 +98,6 @@
|
|
80
98
|
|
81
99
|
|
82
100
|
|
83
|
-
//処理実行イベントを通知する先
|
84
|
-
|
85
|
-
weak var delegate:ViewController! = nil
|
86
|
-
|
87
|
-
|
88
|
-
|
89
101
|
override func viewDidLoad() {
|
90
102
|
|
91
103
|
super.viewDidLoad()
|
@@ -122,6 +134,18 @@
|
|
122
134
|
|
123
135
|
|
124
136
|
|
137
|
+
var delegate:ReloadDataDelegate!
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
//A画面に載っけるViewの定義
|
142
|
+
|
143
|
+
@IBOutlet weak var containerView: UIView!
|
144
|
+
|
145
|
+
var containers:Array<UIView>=[]
|
146
|
+
|
147
|
+
|
148
|
+
|
125
149
|
override func viewDidLoad() {
|
126
150
|
|
127
151
|
super.viewDidLoad()
|
@@ -132,13 +156,39 @@
|
|
132
156
|
|
133
157
|
self.delegate = viewControllerB
|
134
158
|
|
159
|
+
|
160
|
+
|
161
|
+
//A画面の上のContentViewとして配置しているB画面を表示(名前がややこしくてすみません)
|
162
|
+
|
163
|
+
containers=[containerA,containerB,containerC]
|
164
|
+
|
165
|
+
containerView.bringSubviewToFront(containers[containerIndex])
|
166
|
+
|
135
167
|
}
|
136
168
|
|
137
169
|
|
138
170
|
|
139
171
|
~(中略)~
|
140
172
|
|
141
|
-
|
173
|
+
//MARK:- segmentBarの値に応じて、スクロール位置を変更
|
174
|
+
|
175
|
+
@IBAction func SegmentAction(_ sender: UISegmentedControl) {
|
176
|
+
|
177
|
+
// let selectedIndex = segmentBar.selectedSegmentIndex
|
178
|
+
|
179
|
+
|
180
|
+
|
181
|
+
let currentContainerView=containers[sender.selectedSegmentIndex]
|
182
|
+
|
183
|
+
containerView.bringSubviewToFront(currentContainerView)
|
184
|
+
|
185
|
+
|
186
|
+
|
187
|
+
}
|
188
|
+
|
189
|
+
|
190
|
+
|
191
|
+
~(中略)~
|
142
192
|
|
143
193
|
@IBAction func templateButton(_ sender: Any) {
|
144
194
|
|
@@ -154,6 +204,8 @@
|
|
154
204
|
|
155
205
|
}
|
156
206
|
|
207
|
+
}
|
208
|
+
|
157
209
|
|
158
210
|
|
159
211
|
```
|