質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

994閲覧

MasterDetailに関する疑問

GAKU_SAY

総合スコア23

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2020/07/19 18:31

編集2020/07/20 00:04

疑問が2つあるので資料ページや解説をお答えいただけると嬉しいです。
MasterDetailAppテンプレートを使用します。プロジェクトはXcode(Ver11.6)で作成しました。

###①セルが消えちゃう問題
下記はテンプレートをそのまま使用した場合の話です。
セルを10個追加しました。→ アプリを終了します。 → アプリを起動します → セルが一個もありません。
となるのは何故でしょうか?また、そのセルが削除されない方法はありますか?

###②セルとDetailViewControllerの関係
セルとDetailViewControllerはそれぞれ対応しているのでしょうか?テンプレートのままのMasterViewControllerのコードを

swift

1override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 2 3 let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) 4 //let object = objects[indexPath.row] as! NSDate 5 cell.textLabel!.text = "(objects.count)" 6 7 return cell 8 }

のように書き換えを行い、セルを10個追加します。この10個のセルにはそれぞれ対応したDetailViewがあるのでしょうか?したいこととしては、DetailViewの中で色々した後戻ったりしてもデータが消えないようにしたいです。

##①が解決しました。
新規プロジェクトを作る際、use coredataをオンにすることで解決しました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TsukubaDepot

2020/07/19 19:03

もう少し前後の処理を見てみないと判断できないことが多いのですが、できる限り全てのソースを提示していただくことはかのうでしょうか。 可能性としては (1)追加したセルに表示する内容は、どこかで永続化処理(保存)を行い、次回自動時には読み込みを行なっているのでしょうか。 (2)ここで使われている objects[] は他の場所でどのように定義され、また初期データなどはどのようにして取得されているのでしょうか。
GAKU_SAY

2020/07/19 22:53 編集

まだ、そこまで多くの内容を実装していない状態なので両方ともXcodeのMasterDetailAppというテンプレートのコードを元にしていただけると嬉しいです。MasterDetailAppテンプレートのコードを書いたほうがいいですか?
guest

回答1

0

ベストアンサー

①セルが消えちゃう問題

下記はテンプレートをそのまま使用した場合の話です。
セルを10個追加しました。→ アプリを終了します。 → アプリを起動します → セルが一個もありません。
となるのは何故でしょうか?また、そのセルが削除されない方法はありますか?

消えてしまうのは、追加したセルを永続化(本体やクラウド上に記憶)させていたいことが原因です。

一方、

新規プロジェクトを作る際、use coredataをオンにすることで解決しました。

ということですが、これはCoreDataを使うように設定しプロジェクトを作ると、追加したデータが CoreData を使って本体に記憶され、またテーブルビューを作る際にデータが読み込まれるよう、自動的にコードが追加されたことが理由となります。

しかし、自動でコードが追加された場所以外でデータの記録や記録したデータの読み込みを行うとなれば、そのためのコードは逐一記述していただく必要になるかと思います。

②セルとDetailViewControllerの関係

セルとDetailViewControllerはそれぞれ対応しているのでしょうか?

対応していません。

各セルを押した時の表示は、ひとつの共通した DetailViewController で表示するようになっているようです(コードを見る限り)。

したいこととしては、DetailViewの中で色々した後戻ったりしてもデータが消えないようにしたいです。

DetailView で色々操作したのであれば、その結果を ViewController に戻す(あるいは、対応するクラスや構造体を作って、それに保存する)ような設計にする必要があります。

Master - Detail といっても、考えなければいけないのは、通常のテーブルビューと画面遷移を用いた値渡しとほぼ同じように考えられますので、それらの資料を参考にしてみてはいかがでしょうか。

コメントには

まだ、そこまで多くの内容を実装していない状態なので両方ともXcodeのMasterDetailAppというテンプレートのコードを元にしていただけると嬉しいです。

とありますが、多少なりともコードを追加したのであればそれをご提示いただいた方がよかったのかもしれませんが、上記2つについては一般的な話なので、とりあえずはお答えできたかと思います。

投稿2020/07/20 01:13

編集2020/07/20 01:14
TsukubaDepot

総合スコア5086

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問