質問編集履歴

1

文章等追記前の文章が投稿された為修正しました。

2021/03/01 13:30

投稿

Teratopi
Teratopi

スコア8

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,18 @@
1
+ ###前提
2
+
1
- TabBarが2つあるアプリで、3つ目の画面Modalで表示させたあと、Modalを閉じるボタンをタップした後にTab2選択された状態にしたいです。
3
+ TabBarが2つある基本画面Modalで表示されるVewController1つあります。
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
- ModalViewContにデリゲートいんIBActionに”dismiss”でModal閉じ
59
+ MainTabBarController直接デリゲートの設定書こうとすと、「関数内に書いてください」とエラーが出ます。
10
-
11
-
12
-
13
- ![イメージ説明](b2766c5db4a5124aa598cbd78bafd596.png)
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
- var count:Int = 0
217
+
164
-
165
-
166
218
 
167
219
  @IBOutlet weak var tabChangeBtn: UIButton!
168
220
 
169
221
 
170
222
 
171
- var selectThirdTab : tabChangeDelegate?
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
- // Do any additional setup after loading the view.
230
+
231
+
180
232
 
181
233
  }
182
234
 
@@ -186,7 +238,7 @@
186
238
 
187
239
 
188
240
 
189
- selectThirdTab?.tabChange()
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