質問編集履歴
1
文章等追記前の文章が投稿された為修正しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,4 +1,18 @@
|
|
1
|
+
###前提
|
2
|
+
|
1
|
-
TabBarが2つある
|
3
|
+
TabBarが2つある基本画面にModalで表示されるVewControllerが1つあります。
|
4
|
+
|
5
|
+
![イメージ説明](433fd2e85d8fa801c6bc70e8298b30a1.png)
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
### 実現したいこと
|
10
|
+
|
11
|
+
1. アプリが起動した時は「Tab First」が選択されています。
|
12
|
+
|
13
|
+
2. Tab Firstの「Modal画面遷移」ボタンをタップするとModalViewContに画面遷移します。
|
14
|
+
|
15
|
+
3. Modal画面上の「Tab2に切り替え」ボタンをタップするとModal画面が閉じて「Tab Second」に切り替わったTabBarが表示されます。
|
2
16
|
|
3
17
|
|
4
18
|
|
@@ -6,11 +20,49 @@
|
|
6
20
|
|
7
21
|
|
8
22
|
|
23
|
+
###わからないこと
|
24
|
+
|
25
|
+
デリゲートの委任先(MainTabBarController)でデリゲートを設定する書き方がわかりません。
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
委任先でデリゲートを設定するには、委任するクラスのインスタンスを生成して、デリゲートプロパティに、そのクラスを代入する?と書く必要があると思います。
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
MainTabBarControllerクラス内に直接記述出来ないようなので
|
36
|
+
|
37
|
+
関数を作成してその中にデリゲートを設定する必要がると思うのですが
|
38
|
+
|
39
|
+
どう書いてよいか分からないのです。
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
###現状実現できていること
|
46
|
+
|
47
|
+
「Class ModalViewCont」にデリゲートインスタンス(var selectSecondTab : tabChangeDelegate?)を設定し、「TabBar2に切り替え」ボタン(IBAction)に「selectSecondTab?.tabChange()」を設定しています。
|
48
|
+
|
49
|
+
「MainTabBarController」には、デリゲートメソッド(func tabChange(){selectedIndex = 1})を書いています。
|
50
|
+
|
51
|
+
この関数で「TabSecond」に切り替わると思っています。
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
後は委任先(Class MainTabBarController)に、デリゲートの設定を書けば良いと思うのですが、ここがよくわかりません。
|
58
|
+
|
9
|
-
M
|
59
|
+
MainTabBarControllerに直接デリゲートの設定を書こうとすると、「関数内に書いてください」とエラーが出ます。
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
|
14
66
|
|
15
67
|
|
16
68
|
|
@@ -28,7 +80,13 @@
|
|
28
80
|
|
29
81
|
|
30
82
|
|
31
|
-
|
83
|
+
/* ここにデリゲートの設定をする必要があると思いますが
|
84
|
+
|
85
|
+
どう書けばよいかわかりません。
|
86
|
+
|
87
|
+
*/
|
88
|
+
|
89
|
+
|
32
90
|
|
33
91
|
func tabChange() {
|
34
92
|
|
@@ -122,8 +180,6 @@
|
|
122
180
|
|
123
181
|
|
124
182
|
|
125
|
-
// Do any additional setup after loading the view.
|
126
|
-
|
127
183
|
}
|
128
184
|
|
129
185
|
}
|
@@ -158,25 +214,21 @@
|
|
158
214
|
|
159
215
|
class ModalViewCont: UIViewController, UITabBarControllerDelegate {
|
160
216
|
|
161
|
-
|
162
|
-
|
163
|
-
|
217
|
+
|
164
|
-
|
165
|
-
|
166
218
|
|
167
219
|
@IBOutlet weak var tabChangeBtn: UIButton!
|
168
220
|
|
169
221
|
|
170
222
|
|
171
|
-
var select
|
223
|
+
var selectSecondTab : tabChangeDelegate?
|
172
|
-
|
173
|
-
|
174
|
-
|
224
|
+
|
225
|
+
|
226
|
+
|
175
|
-
override func viewDidLoad() {
|
227
|
+
override func viewDidLoad() {
|
176
|
-
|
228
|
+
|
177
|
-
super.viewDidLoad()
|
229
|
+
super.viewDidLoad()
|
178
|
-
|
179
|
-
|
230
|
+
|
231
|
+
|
180
232
|
|
181
233
|
}
|
182
234
|
|
@@ -186,7 +238,7 @@
|
|
186
238
|
|
187
239
|
|
188
240
|
|
189
|
-
select
|
241
|
+
selectSecondTab?.tabChange()
|
190
242
|
|
191
243
|
dismiss(animated: true, completion: nil)
|
192
244
|
|
@@ -197,3 +249,11 @@
|
|
197
249
|
}
|
198
250
|
|
199
251
|
```
|
252
|
+
|
253
|
+
##開発環境
|
254
|
+
|
255
|
+
Mac-mini(M1)
|
256
|
+
|
257
|
+
macOS 11.2.1(BigSur)
|
258
|
+
|
259
|
+
XCode 12.4
|