【iPhone】メモ帳アプリを制作してみる Part.6【swift】
メモの保存&読込
保存の方法には色々あるらしいが、今回は「NSUserDefaults」という方法を使ってみる。”ちょっとした内容を保存する”のに向く方法らしいが、詳しいことはよく知らない。
まずViewController.swiftに、保存ボタンをAction接続、メモ本体をoutlet接続しておく。名前はなんでも良いのですが、私は「saveButton」と「memo」にした。
Action接続はそれでなんかしたいときにする接続。(今回の場合は、保存ボタンを押したら保存するという動作をしたい。)
outlet接続はそれでなんかよみこみたいときにする接続。(今回の場合は、保存した文章を起動時にメモに読み込みたい。)
※この時点で「意味わからん!!」って人は少し待って下さい。別で記事を書きます。
ここまで出来たら、後は下記のソースをViewControllerにコピペ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
import UIKit class ViewController: UIViewController { //メモNo var memoNo = "" //NSUserDefaults活性化ァ! let saves = NSUserDefaults.standardUserDefaults() //保存 @IBAction func saveButton(sender: AnyObject) { saves.setObject(memo.text, forKey: "myText"+memoNo) } //メモ @IBOutlet weak var memo: UITextView! override func viewDidLoad() { memo.text = saves.stringForKey("myText"+memoNo) super.viewDidLoad() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } } |
「”myText”+memoNo」ってのは、メモを本体に保存する際に使う識別名(key)。とりあえず今回は”myText”+memoNoにしたけど、キー名は何でもいい。後ろについてる「memoNo」は、メモごとに保存したいからセルNoを割り振ってる。(1個目のメモなら”myText1″、2個目のメモなら”myText2″って感じで保存されるようにした。)
ListViewControllerには下記をコピペ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
import UIKit class ListViewController: UITableViewController{ //メモNo var memoNo = "" override func viewDidLoad() { super.viewDidLoad() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } //セルの総数を設定するメソッド override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{ return 3 } //セルの値を設定するメソッド override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{ var cell = tableView.dequeueReusableCellWithIdentifier("MemoListCell")! as UITableViewCell cell.textLabel!.text = "タイトル" return cell } //セルがタップされた時に呼び出されるメソッド override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { self.memoNo = String(indexPath.row) performSegueWithIdentifier("toView",sender: nil) } // Segue設定 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) { if (segue.identifier == "toView") { let subVC: ViewController = (segue.destinationViewController as? ViewController)! subVC.memoNo = self.memoNo } } } |
セルNoをViewControllerに渡す処理を追加してる。
適当にメモを書いて「保存」ボタンを押下。一度アプリを閉じて起動し直すと、ちゃーんとメモが読み込まれた。やったね。
やってること
1.保存ボタンを押したらmyTextにメモを保存します。
2.起動時(viewDidLoad時)にメモを読み込みます。
以上