回答編集履歴

2

インデント修正

2017/12/07 02:33

投稿

fromageblanc
fromageblanc

スコア2724

test CHANGED
@@ -154,17 +154,15 @@
154
154
 
155
155
 
156
156
 
157
- // TabBarのインスタンス経由でFirstViewControllerのインスタンスを取得
157
+ // TabBarのインスタンス経由でFirstViewControllerのインスタンスを取得
158
158
 
159
- if let tabvc = UIApplication.shared.keyWindow?.rootViewController as? UITabBarController {
159
+ if let tabvc = UIApplication.shared.keyWindow?.rootViewController as? UITabBarController {
160
160
 
161
+ // FirstViewControllerのインスタンスをdelegateにセット
161
162
 
163
+ self.delegate = tabvc.viewControllers?.first as? TestDelegate
162
164
 
163
- // FirstViewControllerのインスタンスをdelegateにセット
164
-
165
- self.delegate = tabvc.viewControllers?.first as? TestDelegate
166
-
167
- }
165
+ }
168
166
 
169
167
 
170
168
 

1

追記

2017/12/07 02:33

投稿

fromageblanc
fromageblanc

スコア2724

test CHANGED
@@ -65,3 +65,119 @@
65
65
  }
66
66
 
67
67
  ```
68
+
69
+
70
+
71
+ ## 2017.12.7 追記
72
+
73
+ TabBarのインスタンス経由でFirstViewControllerのインスタンスを取得
74
+
75
+ (FirstViewControllerがイニシャルビューと仮定してます)
76
+
77
+ ```swift
78
+
79
+
80
+
81
+ // FirstViewController.swift
82
+
83
+ import UIKit
84
+
85
+
86
+
87
+ class FirstViewController: UIViewController, TestDelegate {
88
+
89
+
90
+
91
+ func test() {
92
+
93
+ print("called delegate")
94
+
95
+ }
96
+
97
+
98
+
99
+ override func viewDidLoad() {
100
+
101
+ super.viewDidLoad()
102
+
103
+
104
+
105
+ }
106
+
107
+
108
+
109
+ override func didReceiveMemoryWarning() {
110
+
111
+ super.didReceiveMemoryWarning()
112
+
113
+ }
114
+
115
+ }
116
+
117
+
118
+
119
+ // SecondViewController.swift
120
+
121
+ import UIKit
122
+
123
+
124
+
125
+ protocol TestDelegate {
126
+
127
+ func test()
128
+
129
+ }
130
+
131
+
132
+
133
+ class SecondViewController: UIViewController {
134
+
135
+
136
+
137
+ var delegate:TestDelegate?
138
+
139
+
140
+
141
+ @IBAction func pushButton(_ sender: UIButton) {
142
+
143
+ delegate?.test()
144
+
145
+
146
+
147
+ }
148
+
149
+
150
+
151
+ override func viewDidLoad() {
152
+
153
+ super.viewDidLoad()
154
+
155
+
156
+
157
+ // TabBarのインスタンス経由でFirstViewControllerのインスタンスを取得
158
+
159
+ if let tabvc = UIApplication.shared.keyWindow?.rootViewController as? UITabBarController {
160
+
161
+
162
+
163
+ // FirstViewControllerのインスタンスをdelegateにセット
164
+
165
+ self.delegate = tabvc.viewControllers?.first as? TestDelegate
166
+
167
+ }
168
+
169
+
170
+
171
+ }
172
+
173
+
174
+
175
+ override func didReceiveMemoryWarning() {
176
+
177
+ super.didReceiveMemoryWarning()
178
+
179
+ }
180
+
181
+ }
182
+
183
+ ```