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

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

新規登録して質問してみよう
ただいま回答率
85.49%
Xcode 7

Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

解決済

1回答

2441閲覧

テーブルビューに保存したデータが、編集中に移動することで消えてしまいます。

obataatu

総合スコア14

Xcode 7

Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

0クリップ

投稿2016/06/12 23:39

編集2016/06/15 14:09

###前提・実現したいこと
初心者です。現在、swiftでiOSの単純なメモアプリを作成しております。
テキストビューに書かれたテキストを移動先のシーンに受け渡し、
テーブルビューセルとして、保存し、削除、編集ができるようにするという内容にしたいと考えています。

###発生している問題・エラーメッセージ
下記の2点がわからず困っています。お手数ですが、原因がお分かりになる方がおりましたら、ご回答いただけますと幸いです。

① テキストをappAppDelegateを通して受け渡し、NSUserDefaultsを使い、保存、削除をすることができたのですが、作成済みのセルテキストの編集ができず困っています。(移動前の書き込みのページに保存されているテキストを受け渡し、編集後上書きしたいのですが、新たなセルとして保存されてしまいます。)

② わかりづらい説明になり申し訳ありませんが、下記の手順の操作をすると保存されているセルが全て消えてしまい、困っています。
・2つ以上のセルを作成する。
・編集ボタンテーブルビューページの編集ボタンメニューにて一つのセルを削除する。
・その後、画面遷移をし、再度テーブルビューページのを開くとセルが全て消えてしまいます。
エラーメッセージがでたり、止まってしまったりすることはないので、単純に処理をするタイミングがおかしいのかなと考えておりますが、知識が足りず、わかりません。

テーブルビュー側 swift import UIKit private let unselectedRow = -1 class memo_list: UIViewController,UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate { @IBOutlet weak var memoListView: UITableView! var memo1:String? var memo2:String? var memoList: [String] = [] var memoList2: [String] = [] var editRow: Int = unselectedRow override func viewDidLoad() { super.viewDidLoad() print(memo1) //保存したテキストデータをロード let hozon = NSUserDefaults.standardUserDefaults() let load = hozon.objectForKey("dly") if (load as? [String] != nil) { memoList = load as! [String] } let hozon3 = NSUserDefaults.standardUserDefaults() let load3 = hozon3.objectForKey("dly3") if (load3 as? [String] != nil) { memoList2 = load3 as! [String] } //配列の個数が合わない場合はリセットする if memoList.count != memoList2.count { memoList = [] memoList2 = [] NSLog("memoListとmemoList2に不整合が生じたので両方リセットしました") } //テキストを受け取る //セルにテキストを入れ込む処理 applyMemo() //編集ボタンを用意 navigationItem.rightBarButtonItem = editButtonItem() } override func setEditing(editing: Bool, animated: Bool) { super.setEditing(editing, animated: animated) memoListView.editing = editing } func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool { memoListView.allowsSelectionDuringEditing = true return true } //セルを削除する処理 func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { if editingStyle == UITableViewCellEditingStyle.Delete { //指定したセルの番号の配列番号を削除する memoList.removeAtIndex(indexPath.row) memoList2.removeAtIndex(indexPath.row) tableView.deleteRowsAtIndexPaths([NSIndexPath(forRow: indexPath.row, inSection: 0)], withRowAnimation: UITableViewRowAnimation.Automatic) //NSUserDefaultsの方のデータも削除(ここでは配列の中の一つを削除しており、下のテキストで再度配列全体を保存し直す) let hozon = NSUserDefaults.standardUserDefaults() hozon.setObject(memoList, forKey: "dly") let hozon3 = NSUserDefaults.standardUserDefaults() hozon3.setObject(memoList2, forKey: "dly3") } } //セルにテキストを入れ込む処理 //新規か編集かを判断 func applyMemo() { if memo1 == nil { return } if memo1 == "" { return } if editRow == unselectedRow { memoList.append(memo1!) memoList2.append(memo2!) } else { print(memo1) memoList[editRow] = memo1! memoList2[editRow] = memo2! } //セル情報を保存する let hozon = NSUserDefaults.standardUserDefaults() hozon.setObject(memoList, forKey: "dly") let hozon3 = NSUserDefaults.standardUserDefaults() hozon3.setObject(memoList2, forKey: "dly3") //セルの選択状態を非選択に戻る editRow = unselectedRow //リロード処理(必須) memoListView.reloadData() } func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return memoList.count } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let Cell = "Cell" let cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: Cell) if indexPath.row >= memoList.count { return cell } //タイトルとサブタイトルに配列からテキストを入れ込む cell.textLabel?.text = memoList[indexPath.row] cell.detailTextLabel?.text = memoList2[indexPath.row] return cell } //作成済みのセルを選択した時の処理 func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { if indexPath.row >= memoList.count { return } editRow = indexPath.row memo1 = memoList[editRow] memo2 = memoList2[editRow] print(memo1) //書き込みページに画面遷移する // SubViewController へ遷移するために Segue を呼び出す performSegueWithIdentifier("settext1",sender: nil) } @IBAction func memo_tuika(sender: AnyObject) { memo1 = "" memo2 = "" performSegueWithIdentifier("settext1",sender: nil) } override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { let send2:SecondViewController = segue.destinationViewController as! SecondViewController if segue.identifier == "settext1" { if memo1 == nil { return } send2.title2 = memo1! send2.honbun2 = memo2! print(memo1) } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } テキスト入力画面 swift import UIKit class SecondViewController: UIViewController,UITableViewDelegate,UITextFieldDelegate { @IBOutlet weak var title_text: UITextField! @IBOutlet weak var honbun_text: textview_custom! var title2:String? var honbun2:String? override func viewDidLoad() { super.viewDidLoad() title_text.delegate = self } //変更点:前回はセル選択時のテキストの受け取りをviewDidLoad()で行ってしまっており、navigationController?.popViewControllerAnimated(true)で戻ってきた場合、処理が行われていなかったため、毎回の遷移全てで反応するviewWillAppearにて行うよう、変更しました。 override func viewWillAppear(animated: Bool) { title_text.text = self.title2 honbun_text.text = self.honbun2 } //移動の際に向こうのプロバティにテキストを引き継ぐ? override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if segue.identifier == "sendtext" { let send:memo_list = segue.destinationViewController as! memo_list send.memo1 = title_text.text send.memo2 = honbun_text.text //その後、初期化する title_text.text = "" honbun_text.text = "" } } //キーボードを下げる処理 override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { if(title_text.isFirstResponder()){ title_text.resignFirstResponder() } if(honbun_text.isFirstResponder()){ honbun_text.resignFirstResponder() } } //保存ボタンアクション @IBAction func save(sender: AnyObject) { performSegueWithIdentifier("sendtext",sender: nil) } //保存(セルの追加)処理をしないで、テーブルビューページに移動する処理 @IBAction func listbotton(sender: AnyObject) { title_text.text = "" honbun_text.text = "" performSegueWithIdentifier("sendtext",sender: nil) } //仮で作った戻るボタン //prepareForSegueが反応してくれない @IBAction func back(sender: UIStoryboardSegue) { let x = self.storyboard?.instantiateViewControllerWithIdentifier("memo_list") x?.modalTransitionStyle = .CoverVertical navigationController?.popViewControllerAnimated(true) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } } AppDelegate swift import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? // メモ用定数 var title:String? var honbun:String? func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { return true } func applicationWillResignActive(application: UIApplication) { } func applicationDidEnterBackground(application: UIApplication) { } func applicationWillEnterForeground(application: UIApplication) { } func applicationDidBecomeActive(application: UIApplication) { } func applicationWillTerminate(application: UIApplication) { } }

###試したこと
初心者で知識が少ないため、テキストを受け渡すタイミングを変えるため、コードを書く位置を変えてみるということしかできず、問題解決ができない状態です。

###補足情報(言語/FW/ツール等のバージョンなど)
xcode Version 7.3.1 (7D1014)
swift2

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

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

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

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

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

guest

回答1

0

ベストアンサー

つっこみどころはいろいろありますが、とりあえず質問にある操作でセルが全て消えてしまう原因は、
tableView(〜 commitEditingStyle 〜) {
のメソッドの中で、
hozon.removeObjectForKey("dly")
で、memoListの内容を保存しているはずのデータを全部削除しているためです。

ここで削除したいのはmemoListの中に入っている1要素だけですから、
memoList.removeAtIndex(indexPath.row)
で対象の要素を削除したら、
hozon.setObject(memoList, forKey: "dly")
でmemoListの内容全体を再度保存しなおせばよいです。

memoList2も同様です。というかmemoList2の方は
memoList2.removeAtIndex(indexPath.row)
も漏れていると思います。


(6/16 23:30追記)
私だったらこうするというサンプルコードを作ってみました。
なお、画面遷移のやり方はpushViewControllerでもセグエでもどっちでもいいんですが、セグエを使う場合、Storyboardの設定を説明するのが面倒なので、最初の質問でやっていたpushViewControllerで遷移する方式でサンプルを作っています。
それと、もともとセルの追加をどうやるつもりだったのか説明がなかったので、テーブルの最後に「メモ追加」セルを加え、それをタップしたら編集画面に移行して入力したデータが追加されるようにしました。

(サンプルコード)

###memo_list.swift

swift

1import UIKit 2class memo_list: UIViewController,UITableViewDelegate, UITableViewDataSource, SecondViewControllerDelegate { 3 4 @IBOutlet weak var memoListView: UITableView! 5 6 let userDefaults = NSUserDefaults.standardUserDefaults() 7 var titleList: [String]! 8 var honbunList: [String]! 9 10 override func viewDidLoad() { 11 super.viewDidLoad() 12 // 保存したデータ読み込み 13 titleList = userDefaults.stringArrayForKey("dly") ?? [] 14 honbunList = userDefaults.stringArrayForKey("dly3") ?? [] 15 16 // 配列の個数が合わない場合はリセットする 17 if titleList.count != honbunList.count { 18 titleList = [] 19 honbunList = [] 20 NSLog("memoListとmemoList2に不整合が生じたので両方リセットしました") 21 userDefaults.removeObjectForKey("dly") 22 userDefaults.removeObjectForKey("dly3") 23 } 24 // 編集ボタンを設定 25 navigationItem.rightBarButtonItem = editButtonItem() 26 // 編集モードでのセル選択可とする 27 memoListView.allowsSelectionDuringEditing = true 28 } 29 30 override func setEditing(editing: Bool, animated: Bool) { 31 super.setEditing(editing, animated: animated) 32 memoListView.editing = editing 33 } 34 35 func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 36 return titleList.count+1 37 } 38 39 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 40 let cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "Cell") 41 if indexPath.row < titleList.count { 42 cell.textLabel?.text = titleList[indexPath.row] 43 cell.detailTextLabel?.text = honbunList[indexPath.row] 44 } else { 45 cell.textLabel?.text = "(メモ追加)" 46 } 47 return cell 48 } 49 50 func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 51 let to_edit = self.storyboard?.instantiateViewControllerWithIdentifier("memo") as! SecondViewController 52 to_edit.delegate = self 53 if let indexPath = memoListView.indexPathForSelectedRow where indexPath.row < titleList.count { 54 to_edit.memoTitle = titleList[indexPath.row] 55 to_edit.memoHonbun = honbunList[indexPath.row] 56 } 57 navigationController?.pushViewController(to_edit, animated: true) 58 } 59 60 func didGetMemo(title: String, _ honbun: String) { 61 if let indexPath = memoListView.indexPathForSelectedRow where indexPath.row < titleList.count { 62 titleList[indexPath.row] = title 63 honbunList[indexPath.row] = honbun 64 } else { 65 titleList.append(title) 66 honbunList.append(honbun) 67 } 68 userDefaults.setObject(titleList, forKey: "dly") 69 userDefaults.setObject(honbunList, forKey: "dly3") 70 //テーブル更新 71 memoListView.reloadData() 72 } 73 74 func tableView(tableView: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle { 75 if (indexPath.row < titleList.count) { 76 return .Delete 77 } else { 78 return .Insert 79 } 80 } 81 82 func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { 83 84 if editingStyle == .Delete { 85 //指定したセルの番号の配列番号を削除する 86 titleList.removeAtIndex(indexPath.row) 87 honbunList.removeAtIndex(indexPath.row) 88 // セルを削除 89 tableView.deleteRowsAtIndexPaths([NSIndexPath(forRow: indexPath.row, inSection: 0)], withRowAnimation: UITableViewRowAnimation.Automatic) 90 // 保存 91 userDefaults.setObject(titleList, forKey: "dly") 92 userDefaults.setObject(honbunList, forKey: "dly3") 93 } else if editingStyle == .Insert { 94 // セル追加画面起動 95 let to_edit = self.storyboard?.instantiateViewControllerWithIdentifier("memo") as! SecondViewController 96 to_edit.delegate = self 97 navigationController?.pushViewController(to_edit, animated: true) 98 } 99 } 100}

###SecondViewController.swift

swift

1import UIKit 2 3@objc protocol SecondViewControllerDelegate { 4 func didGetMemo(title:String, _ honbun:String) 5} 6 7class SecondViewController: UIViewController,UITableViewDelegate,UITextFieldDelegate { 8 9 @IBOutlet weak var title_text: UITextField! 10 @IBOutlet weak var honbun_text: textview_custom! 11 12 weak var delegate:SecondViewControllerDelegate! 13 var memoTitle:String = "" 14 var memoHonbun:String = "" 15 16 17 override func viewDidLoad() { 18 super.viewDidLoad() 19 20 title_text.delegate = self 21 22 // 受け取ったタイトルとテキストを表示 23 title_text.text = memoTitle 24 honbun_text.text = memoHonbun 25 } 26 27 28 //保存ボタンアクション 29 @IBAction func save2(sender: AnyObject) { 30 delegate.didGetMemo(title_text.text!, honbun_text.text) 31 navigationController?.popViewControllerAnimated(true) 32 } 33 34 //キーボードを下げる処理 35 override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 36 37 if(title_text.isFirstResponder()){ 38 title_text.resignFirstResponder() 39 } 40 if(honbun_text.isFirstResponder()){ 41 honbun_text.resignFirstResponder() 42 } 43 44 } 45 46 //保存処理をしないで、テーブルビューページに移動する処理 47 @IBAction func listbotton(sender: AnyObject) { 48 navigationController?.popViewControllerAnimated(true) 49 } 50}

memo_list.swiftとSecondViewController.swiftを上記の内容に差し替えてみてください。

変数名等が気に入らないものも勝手に変更しましたが、Storyboardと接続しているプロパティ名やメソッド名は変えないようにしておきましたので、そのままコードを差し替えるだけでStoryboardとちゃんと接続して動作できるはずです。
動作確認できたら、どう違うのかコードを比較してみてください。

投稿2016/06/13 02:50

編集2016/06/16 15:13
TakeOne

総合スコア6299

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

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

obataatu

2016/06/13 04:03

ご回答いただきありがとうございます。 ご指摘の箇所を修正することで、セルが消えてしまう問題は解決することができました! 今一度コード全体を見直し、もう一つの方の問題解決に努めたいと思います。 ツッコミどころが多くあるとのことですが、どこか大きく書きかたが間違っている箇所があるということでしょうか? お手間でなければ、ご指摘いただきたく思います。
TakeOne

2016/06/13 17:55

では気になるところを簡単に指摘してみます。 (1)一番気になっているのは、SecondViewControllerからmemo_listに戻る時に、pushViewControllerで遷移していることです。これは戻っていません。画面遷移元のmemo_listを残したまま、新しい別のmemo_listを作成して、それでテーブルを表示しています。これを繰り返すと古いmemo_listが解放されないままどんどん残ってしまい、やがてメモリ不足になります。 質問の①の原因について回答するのを忘れていましたが、①の問題はまさにこれが原因です。遷移元のmemo_listに戻るのではなく、新しいmemo_listに遷移しているためapplyMemo()は常にeditRowがunselectedRowの状態で動作します。元の画面に戻るにはpushViewControllerじゃなくてpopViewControllerAnimatedを使います。 (2)次に気になるのは、情報カプセル化の観点で、情報の引き渡しのためにAppDelegate等のアプリで一つしかない場所を使わないほうが良いということです。情報のカプセル化を考えずに設計すると、後で機能を追加したり機能を流用したりする時に、その機能と関係ないところに影響が出てしまい、分かりにくく扱いづらいコードになります。 例えば、AppDelegateのtitleやhonbunというプロパティはmemo_listで選択したデータをSecondViewControllerに引き渡したり、そこで編集したデータをmemo_listに戻したりするためだけに使っていると思いますが、そういう情報引き渡しの目的のデータは、SecondViewControllerのプロパティで保持し、それをmemo_listから参照/更新するようにした方が良いです。また、memo_listのmemo1,memo2というプロパティですが、このデータはviewDidLoadからapplyMemoに追加してもらうデータを引き渡すためだけに使っていると思います。こういうのはapplyMemoのパラメータで引き継いだ方がよいです。
obataatu

2016/06/15 17:59 編集

ご返信が遅くなってしまい、申し訳ありません。 ご指摘頂いた部分の理解と修正に時間がかかりました。 大変的確にご説明頂き、大変助かります。 しかし、問題解決に努める道中、また新たにわからない点が出てしまい、混乱してしまっておりますので、大変恐れ入りますが、ご質問させて頂いてよろしいでしょうか。 お手数でなければ、御指南頂きく思います。 まず、(2)でご指摘頂いた点ですが、データの受け渡しにAppDelegateを通さず、ストーリーボードでセグを渡し、prepareForSegueにて受け渡す方法に変更しました。(この方法しか知らなかったためです。 ”applyMemoのパラメータで引き継いだ方がよいです”というのはこのような形でしょうか?) 次に(1)のご指摘に関して、ご質問をしたい点が3点あります。 ※事前のご説明が漏れておりましたが、今回したい動きとしては、 1. テキスト記入画面からスタート 2. 保存ボタンにて画面遷移&テーブルビューにセルとして追加 3. テーブルビューの追加ボタンorセルタッチにて再度テキスト入力画面に画面遷移 (追加ボタンでの移動の場合、テキスト記入画面は空のテキストビュー、セルタッチの場合は、テーブルの配列から抜き出し編集をしたい) なお、掲載コードは現状のものに修正してあります。 以下、ご質問です。 1. テキスト入力ページの保存ボタンについて、立ち上げ後最初の移動は pushViewControllerにて行い、一度セルを追加したのち、再度テキストを編集後の移動はpopViewControllerAnimatedにて戻りたいです。(セルタッチの場合、この方法ならunselectedRowじゃない状態で動作させることができるでしょうか?) この場合、同じボタンで2種類の移動方をさせることは可能でしょうか? (現状、仮として2種類の保存ボタンを用意してます。しかし、ストーリーボードでpopViewControllerAnimated(true)を行う場合はどうするのかわからず、詰まってしまっております。) 2. ストーリーボードでpopViewControllerAnimated(true)を行う場合はどうするのでしょうか? 3. データの受け渡しに、prepareForSegueを利用しておりますが、””片方のプロパティで保持し、もう一方の方から参照、編集する”動作は他のコードでも可能なのでしょうか? 知識が足りず、長文になってしまい、申し訳ありません。 わかりづらい点が多々あるかもしれませんが、他にご指導頂ける場がないため、ご教授願いしたく思います。
obataatu

2016/06/15 14:59

お伝えが漏れておりましたが、掲載コードの方は編集済みのものです。
TakeOne

2016/06/15 18:46

1個ずつ指摘しようとしていたらきりがなくなってきたので、後で時間ができたらサンプルを掲載します。
obataatu

2016/06/15 19:08

ご返信ありがとうございます。 大変恐れ入りますが、自分では収拾がつかなくなっておりますので、サンプルを頂けますと、大変助かります。 お手数ですが、お願い致します。
TakeOne

2016/06/16 14:39

回答欄にサンプルを掲載しました。
obataatu

2016/06/16 23:52

ご返信ありがとうございます。 サンプル拝見させて頂きました。 自分のものと比べて、無駄が一切なく、こちらの理想的な動きを実現できておりました。 誠にありがとうございます。 移動方もTakeOne様のコードに沿って、セグエなしで作ることにしました。 頂いたコードに関して質問ですが、サンプルですと、仕組み上テーブルビューの画面からスタートすることになりますが、これを「トップ画面のボタンAから遷移した場合は、”テキスト記入画面”からのスタート、ボタンBから遷移した場合は、頂いたコードのように”テーブルビュー画面からスタート(A,B共有のもの)”」としたい場合は、新たにテキスト記入画面ファイルとテーブルビューファイルを2つ追加で作り、保存場所は共有にする、という作り方で合っておりますでしょうか? 申し訳ございません。一人の開発なので、不安になっております。
obataatu

2016/06/18 19:14

連続の投稿失礼します。 試行錯誤の結果、上記の内容では不安定なコードになってしまいそうですので、TakeOne様に頂いたサンプル内の方法にて開発を進めることにしました。 複数回にわたり、ご指摘、ご教授頂き、誠にありがとうございました。
TakeOne

2016/06/18 23:58 編集

しばらく普段と違う環境にいたので返信が遅れました。 > 「トップ画面のボタンAから遷移した場合は、”テキスト記入画面”からのスタート、ボタンBから遷移した場合は、頂いたコードのように”テーブルビュー画面からスタート(A,B共有のもの)”」としたい場合は、新たにテキスト記入画面ファイルとテーブルビューファイルを2つ追加で作り、保存場所は共有にする、という作り方で合っておりますでしょうか? 新たに別のクラスを作ってもできるとは思いますが、私が作ったSecondViewControllerは、情報のカプセル化と整理によりmemo_listから呼び出されることを前提としなくても動作できるように作っていますから、テキスト記入画面はうまくそれを流用すれば、新しい画面を作らなくてもできると思います。 それと、最初の質問ではmemo_listとSecondViewControllerしかないように書かれていたので、タイトル一覧(titleList)と本文一覧(honbunList)はmemo_listだけが参照するデータだと考えましたが、memo_listのさらに親がいて、そこでもタイトル一覧や本文一覧を扱いたいのであれば、その親にtitleListやhonbunListを定義するか、もっといえば、タイトル一覧や本文一覧はこのアプリの中にただ一つしか存在しない中心データであると言えるなら、いっそのことAppDelegateのプロパティとして定義してもよいと思います。 要するにそのリストデータをどの範囲で共有するかを考えて適切な場所に定義すればよいということです。
obataatu

2016/06/20 22:35

ご返信が遅くなり、申し訳ありません。 教えて頂いた考え方で再度書き直し、なんとか理想の形にすることができました。 一連の回答は、知識が少なく、未熟な私には、大変参考になりました。 質問への回答、サンプルの作成、などお力添え頂き、誠にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問