
※この記事は初心者の方や初めてアプリを作る人を対象にしています。
動作環境 Xcode Version 11.4 Swift version 5.2
今回は前回できていなかった「変数memo」に代入した値をTableViewの方で受け取る仕組みを説明します。
前回はモーダルウィンドウのテキストフィールドにメモの内容を入力してその値を、「prepareメソッド」で「変数memo」に代入しましたね。
今回する事は「変数memo」の値を、TableViewで受け取って表示させたいと思います。
なので今回は「MemoTableViewController.swift」にコードを書いていきます。
segueを巻き戻すと言うのはモーダルウィンドウのSaveボタンを押してTableViewに戻った時と言う事です。
なのでTableViewに戻った時に実行させるメソッドをこれから作っていきます。
下記コードを「MemoTableViewController.swift」に追加します。
var memos = ["まゆげじお", "F-chan", "D-matsuo"]
@IBAction func unwindToMemoList(sender: UIStoryboardSegue) {
guard let sourceVC = sender.source as? MemoViewController,
let memo = sourceVC.memo else {
return
}
self.memos.append(memo)
self.tableView.reloadData()
}
このメソッドは後でstoryboardから接続する事になります(この後どう言う事かわかると思います)
そのようなメソッドは最初に「@IBAction」と書くのがお約束になっているので覚えておきましょう!
ではまずは下記コード部分の説明をします。
@IBAction func unwindToMemoList(sender: UIStoryboardSegue) {
@IBActionの後、メソッドを作るので「func」と書いてメソッド名を付けてあげます。
今回は「unwindToMemoList」と言う名前にします。
次に()の中に引数を書きます。
今回は引数にsegueを入れるので「UIStoryboardSegue」と書きます。
次は下記コードの説明です。
guard let sourceVC = sender.source as? MemoViewController,
let memo = sourceVC.memo else {
return
}
「guard」でチェックしつつ、「let sourceVC」にMemoViewControllerの情報(モーダルウィンドウの事)を代入しています。
「sender.source」で情報を取得しつつ「as? MemoViewController」で型キャストしています。
チェックがうまくいったら、「let memo」に「sourceVC.memo(テキストフィールドに入力したメモ)」を代入しています。
うまく行かなかった場合「else { return}」で処理を止めます。
次に下記コードの説明です。
self.memos.append(memo)
self.tableView.reloadData()
}
テキストフィールドに入力したメモの値が入っている「let memo」を1行目ので代入しています。
「self.memos」と言うのはこの配列変数の部分ですね。
var memos = ["まゆげじお", "F-chan", "D-matsuo"]
これで配列に追加されたので、次にtableViewを再読み込みします。
それが2行目のコードです。
ここで先ほど「この後どう言う事かわかると思います」と言っていた部分の話になります。
モーダルウィンドウのSaveボタンを押した時にsegueが巻き戻るように、下記画像のようにします。
これでOKだと思います。
ではシュミレーターで確認して見ましょう!
冒頭の動画のようにメモを追加できればOKです。
今回の記事で何とかメモを追加するまで実装できました!
次回はテキストフィールドにテキストが入力されるまでSaveボタン無効にすると言う処理を実装してみます!
[…] 今回編集するのはMemoTableViewController.swiftの「unwindToMemoListメソッド」です。ちなみに「unwindToMemoListメソッド」はこちらの記事で登場済みです。下記コードが「unwindToMemoListメソッド」の現状です。 […]