回答編集履歴

2

修正

2018/10/07 06:40

投稿

xAxis
xAxis

スコア1349

test CHANGED
@@ -1 +1,63 @@
1
- ```prepare```関数内でやってる処理をunwindするときの関数内(```GoToViewController```関数に繋がってるのかな?)でやったらみてください。
1
+ ### 回答
2
+
3
+
4
+
5
+ まずunwind関数というのは遷移先で定義されます。コードではすでに書かれている```GoToViewController```関数がこれにあたります。また、```UIStoryboardSegue```を引数に持っているので遷移元のインスタンスにも直接アクセスできます。なので遷移元にある```add```関数と```addName```は無くても問題ありません。コメントアウトしてみてください。また```add```関数とStoryboardのIBAction接続も切りましょう。
6
+
7
+
8
+
9
+ ```swift
10
+
11
+ // var addName : String?
12
+
13
+
14
+
15
+ // @IBAction func add(_ sender: Any) {
16
+
17
+ // addName = nameTextField?.text
18
+
19
+ // }
20
+
21
+ ```
22
+
23
+
24
+
25
+ 次に遷移先にある```GoToViewController```関数をunwindSegue接続してあるかの確認をしてください。接続がしてなければStoryboard上にあるAddGroupViewControllerをクリック、AddGroupViewController上に三つのボタンが出てきますのでその一番右のボタンにカーソルを合わせてください。"Exit"の文字が表示されます。UIButtonとそのExitを接続するとunwind接続出来る項目が出てきます。多分名前はGoToViewControllerWithSegueのはずです。この項目をクリックしましょう。
26
+
27
+ これでunwind接続が出来上がりました。
28
+
29
+
30
+
31
+ あとはコード上の```GoToViewController```関数内で遷移元のデータを遷移先に渡してtableViewのリロードを行っていきます。```prepare```関数内にデータを渡すためのコードの原型が出来上がってるのでこれを修正していきます。またこの```prepare```関数もコメントアウトしましょう。
32
+
33
+
34
+
35
+ ```swift
36
+
37
+ guard let source = segue.source as? AddGroupViewController else {
38
+
39
+ fatalError()
40
+
41
+ }
42
+
43
+ if let text = source.nameTextField.text {
44
+
45
+ GroupTitle.append(text)
46
+
47
+ GroupTable.reloadData()
48
+
49
+ }
50
+
51
+ ```
52
+
53
+
54
+
55
+ 上記のコードを```GoToViewController```関数内に書けば大丈夫でしょう。
56
+
57
+
58
+
59
+ ### 以下余談
60
+
61
+
62
+
63
+ クラス名や構造体名は大文字で始めますが、変数名や定数名、関数名は小文字から始めるのがswiftの慣習になります。なので一旦きちんと動作することを確認できたらこういう部分の修正もしていくことをお勧めします。その場合、IBOutletやIBActionで接続されているものは名前の変更が行われると正しく動作しなくなります。なので一旦接続を切ったのち再接続しましょう。

1

追記・修正

2018/10/07 06:40

投稿

xAxis
xAxis

スコア1349

test CHANGED
File without changes