MasterDitailをつかってTodoリストを作る。じぶんなりに。3

続きます。

前回、新規の+ボタンでDetail画面に行って保存で戻ってくる所まで出来ました。
次はすでにあるセルをタップして編集に行きます。

Master-Detail ApplicationではセルをタップするとDetail画面にセグエする仕様になっています。

このセグエにはshowDetailというidentifierが付いています。
MasterDitailをつかってTodoリストを作る。じぶんなりに。3

セグエで移動する前に呼ばれるのはprepareForSegueメソッドです。
この中でshowDitailでセグエする場合の処理を書きます。

この中で編集されているセルが何番目のセルなのかを保持する方法がよーわからんかったので、DetailViewControllerにまで持って行って保持した。
Master画面でそれなりのプロパティをつくっておけばよかったのかな?

とりあえずDetailViewController.hにindexPathプロパティを作る。

んでからMasterViewController.mのprepareForSegueメソッドの内容を記述。

これで、セルの内容をDetail画面に送り出したわけですが、まだDetail画面の受け取り準備が出来てません。
Detail画面で受け取ったtodoの内容をそれぞれテキストフィールド、テキストビューに入れます。

DetailViewController.mのconfigureViewを修正します。

これでMaster画面から送られてきたセルの内容がDetail画面で表示されるようになりました。
しかしこのままでは保存ボタンを押すと新規のセルとして保存されてしまいますのでそれを修正します。

MasterViewController.mのunwindToMasterを編集します。
遷移先に送ってあったセルの番号を取得し、中身が無ければ新規保存、有るなら内容修正のメソッドに行くようにします。

セルの内容修正のメソッドは

これで新規でTODOを作る、作ったTODOをDetail画面で修正して戻るとこまで出来た。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">