teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追加

2020/05/04 09:56

投稿

TsukubaDepot
TsukubaDepot

スコア5086

answer CHANGED
@@ -120,4 +120,44 @@
120
120
  }
121
121
  }
122
122
  }
123
- ```
123
+ ```
124
+
125
+ ---
126
+
127
+ 呼び出し側で配列を管理する例として、たとえばこのような方法もあります。
128
+
129
+ ```swift
130
+ import UIKit
131
+
132
+ class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
133
+ // MARK: 2020/05/04 追加
134
+ // 配列はこちらに置く
135
+ let detailedArray = ["A","B","C","D"]
136
+
137
+ // MARK: 2020/05/04 追加
138
+ // performSegue(withIdentifire:sender)が呼び出された後に呼ばれる
139
+ // この時点で nextViewController はインスタンス化済み
140
+ override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
141
+ if let nextVC = segue.destination as? nextViewController {
142
+ nextVC.array = detailedArray
143
+ }
144
+ }
145
+
146
+ // 後は同じ
147
+ }
148
+
149
+ // MARK: 変更
150
+ // UINavigationControllerDelegate にも準拠させる
151
+ class nextViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UINavigationControllerDelegate {
152
+ // MARK: 2020/05/04 変更
153
+ // array はオプショナル型の配列として宣言しておく。
154
+ // 具体的な値を入れるのは、viewControllerのprepareメソッドで行っている
155
+ var array: [String]!
156
+
157
+ // 後は同じ
158
+ }
159
+ ```
160
+
161
+ `segue` を使って画面遷移を行なっているので、`prepare`メソッド内で遷移先のクラスにアクセスし、そこに値を入れています。
162
+
163
+ もちろん、これ以外にもいろいろなパターンが考えられると思いますが、ひとつの参考にしていただければと思います。