For Want Of A Better Word

【コピペしたけど】iOS+Xcode5開発_メモ帳サンプル実施【動かない】

      2015/04/18

http://jprogramer.com/iosandcocoa/2046/

ながれ

①MasterDetailでプロジェクトを作成する。
②「+」を押すと題名が表示されるように改良する
③メモファイルの読み込みを実装する
④追加項目を削除できるようにする
⑤メモの内容を表示する
⑥メモ内容を編集する

※メモの内容はファイルに保存。1メモ毎に1メモファイルを作成する。

メモ

①省略
②「+」を押すと題名が表示されるように改良する

# MasterViewController.m

  • (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@”Cell” forIndexPath:indexPath];

//NSDate *object = _objects[indexPath.row];
//cell.textLabel.text = [object description]; //削除

NSURL *FURL=_objects[indexPath.row];//insertNewObjectで_objectに追加したので..
NSDictionary *dic=[NSDictionary dictionaryWithContentsOfURL:FURL]; //ファイルURLから読み込み
cell.textLabel.text=dic[@”title”];//「題名」を表示

return cell;
}
|

※cellForRowAtIndexPathはCellの表示内容設定のためのメソッド(ソースを検索しても宣言しかないので、自動的に呼ばれる?)

■ざっくり<登録>
・テーブルに表示するオブジェクト(_objects)を作成
・dicとしてデータ保存配列を作成
・ファイルマネージャーインスタンスを作成
・ファイルマネージャーインスタンスからドキュメントフォルダへのパスを取得
・ファイル名を作成(ユニーク)
・ドキュメントフォルダとファイル名から保存用ファイルの作成。(1メモ毎に1ファイルを作成するイメージ)
・そのファイルにdicを書き込み
・オブジェクトの先頭に、保存したファイルパスのデータを保存
・インデックスパスを作成。
・インデックスパスとオブジェクトでテーブル描画を更新<セルの表示>
・cellForRowAtIndexPathで_objectからファイルパスを取得。textをtitleにして保存–。

■疑問
・NSURL作成時のNSFIleManagerインスタンスへの引数が分からん。。。
・cellForRowAtIndexPathはどこから呼ばれるか。

■補足
・ファイルの保存先パス関連:http://qiita.com/__zck__/items/9d087d498ce711b22c04

③メモファイルの読み込みを実装する

■補足
ビューコントローラのライフサイクル毎自動メソッド:http://blog.77jp.net/iphone%E9%96%8B%E7%99%BA-uiviewcontroller-%E3%83%A9%E3%82%A4%E3%83%95%E3%82%B5%E3%82%A4%E3%82%AF%E3%83%AB-viewdidload-viewwillappear-viewdidappear-viewwilldisappear-viewdiddisappear-ios-%E9%80%86

■疑問

  • なぜここではreloadDataで、insertNewObjectの時はinsertRowsAtIndexPathsなんだ?
    • insertの時にreloadDataでも反映されるけど、挿入のアニメーション感が無い。

テーブルビューの素になっているオブジェクトを更新して、テーブルをviewを更新するっていうのが、一番シンプルな更新方法ということ!

④追加項目を削除できるようにする

ここはシンプル..

⑤メモの内容を表示する

セグエを使ってメモの内容を詳細画面に渡す!
・「Add 3 Constraints」「Add 4 Constraints」っつーのがよく分からん。いったん飛ばし!

⑥メモ内容を編集する

ここはデリゲート。

入力部品から、Ctrl+ドラッグでviewを選択してを追加。
hファイルのクラス宣言を修正(<>部分の追加)

mファイル修正。

と、ここまでやったけど…エラー発生

詳細画面から「navigation bar」の「Master」を押して戻ろうとするとエラーが出る..

2014-09-01 13:56:30.765 memoSample1[29870:60b] -[DetailViewController titleField:]: unrecognized selector sent to instance 0x8f853c0
2014-09-01 13:56:30.769 memoSample1[29870:60b] *** Terminating app due to uncaught exception ‘NSInvalidArgumentException’, reason: ‘-[DetailViewController titleField:]: unrecognized selector sent to instance 0x8f853c0′

本件の対応は下記の記事参照
http://www.fwoabw.info/entry/2014/09/01/175716

次にしたいこと。

こいつのカスタム
・入力後・returnを押してもにキーボードが下にさがらないので、これを下げる。
・データをSQLiteに保存

    • 以下は別のサンプルに挑戦したときで良いか..

・テキスト以外の入力項目を増やす。(セレクトボックス・画像の登録とか)

その前に色々探していた時に下記のページが気になったので。。ここのチュートリアルを漁ってみよう
http://www.raywenderlich.com/tutorials

下記が日本語対応だしこれかな。
http://www.raywenderlich.com/ja/25158/ios5%E3%82%B7%E3%83%B3%E3%83%97%E3%83%ABiphone%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA%E8%AC%9B%E5%BA%A7%EF%BC%9Apart-13

 - ios, objective-c, xcode

  関連記事

objective-c
【iOS7+Xcode5】FMDBサンプルアプリの構造確認②

前回の続き 【iOS7+Xcode5】FMDBサンプルアプリの構造確認① &#8 …

objective-c
iOS7+Xcode5開発_メモ帳サンプルアプリ改修①編集終了後キーボードを隠す。

編集終了後キーボードを隠す。 TextFieldについて [参考]http:// …

objective-c
【iOS7+Xcode5】FMDBサンプルアプリの構造確認①

DBの使い方を確認して、最終的には下記サイトを参考に作ったメモアプリを修正する形 …

objective-c
【Objective-Cが襲いかかってきた】IOS7+Xcode開発_TODOアプリ_作成メモ(1) プラスボタンのコード

よっしゃいくぜTODOアプリ(Xcode4.5向けだけど、5でやるぜ。なんとかな …

objective-c
【iOS_Xcode5】 Mastere-Detailテンプレートの要素追加の処理を追う

テンプレートを作った時デフォルトで「+」を押した時に時刻の行が追加されて、詳細に …