サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
WWDC24
xcatsan2.blogspot.com
OneLiner の作成は細々と続いている。今はこんな感じ。 詳細情報のビューではタイトルとメモの入力、それとカメラ取り込みができるようになっている(まだできていないが)。 さて詳細情報のビュー(以下、詳細ビュー)では、何も工夫しないと下記の場合キーボードが出っぱなしになってしまう。 前回テキストフィールドにフォーカスがあたった状態で、詳細ビューを開く テキストフィールドにフォーカスをあててしまった このままだと画像が見えなくて困るのでキーボードを隠す必要がある。はじめてのiPhoneプログラミング によればフォーカスを外せばキーボードは自動的に隠れるとのこと。そこで次のタイミングでフォーカスを外す事ににした。 詳細ビューが隠れる時 テキストフィールド以外をタッチした時 フォーカスを外すには全てのテキストフィールドに対して resignFirstResponder を投げれば良い。その為の
概要 NSFetchedResultsController のインスタンスを作る時に sectionNameKeyPath: へグルーピング条件となるKeyPathを渡すと、簡単に UITableView でグルーピングができる。 例えばこれが こうなる。 sectionNameKeyPath: インスタンス作成時のコードはこんな感じ。 NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:coreDataManager.managedObjectContext sectionNameKeyPath:@"treatedYear" cacheName:@"
これを こうする UITableViewDelegate の2つのメソッドを実装すれば良い。 - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{ return UITableViewCellEditingStyleNone;}- (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath{ return NO;}
UIImagePickerController を使って写真を撮影したのち、呼び出し元の UIViewConroller の viewDidLoadが呼び出されていることに気がついた。このメソッドはてっきり最初に一回だけ呼び出されるものと思っていたのでここへ初期化処理を書いておいたのだが、そのせいで写真撮影毎に初期化処理が呼び出されてしまった。また view上の UIImageView へ設定していた画像が表示されない。中身を確認すると nil になっていた。 調べてみると、どうもメモリ不足が原因で UIViewController が view を再作成しているのが原因ということだった。 2009-01-21 - f-shinの日記 - iPhoneアプリ開発グループ 実際、didReceiveMemoryWarning が呼び出されているのがわかった。 - (void)didRecei
新しいサイトはこちらです↓ Cocoaの日々 ※このサイトは閉鎖せずに今後も公開しておきます。 長い間ありがとうございました。 よければ新しいサイトの方も訪問してみて下さい。
iPhone Dev Center から CoreDataBooks というサンプルコードを入手してソースを読む。なるほど NSFetchedResultsController を使うと UITableView で CoreData を使うのが楽になりそうだ。 CoreDataBooks の動作はこんな感じ。 リストに詳細表示、それと項目の編集を行う3つのビューから構成される。データの格納に CoreData を採用していて UITableView との連携に NSFetchedResultsController を使っている。 NSFetchedResultsController の使い方を理解するためにこのコードを参考にしつつ、(テーブルが一つで)構造が単純な OneLiner を NSFetcedResultsController を使うバージョンに書き換えてみる。 MainView
(前回)Cocoa Touch の日々: CoreData - テーブルの件数を取得する 件数が取得できたので今度はデータを取得し、これを UITableView へ表示する。 CoreDataからのデータ取得方法は Mac Dev Center のガイドを参考にした。 Mac Dev Center: Core Data Programming Guide: Fetching Managed Objects データ取得ができたのでこれを UITableView へ表示する。 まず DataSource メソッドの実装。 件数は前回作成したメソッドを使用する。 - (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section { return [self getCount]; } 1行毎の
Mac Dev Center: Core Data Programming Guide: Core Data Performance この中の "Analyzing Fetch Behavior with SQLite" に、コマンドライン引数に次を指定すると CoreDataから SQLite へ発行される SQL をデバッグ出力できるとの記述があった。 -com.apple.CoreData.SQLDebug 1 やってみよう。 実行可能ファイルの設定を開く。 「起動時に渡される引数」に上記の引数を追加する。 実行する。以下、例。 2009-10-05 06:50:48.557 OneLiner[1202:207] CoreData: sql: SELECT COUNT(*) FROM ZMEMO t0 2009-10-05 06:50:48.558 OneLiner[1202:207
(前回からの続き:Cocoa Touch の日々: CoreDataを使う) これから CoreData のデータを UITableView へ表示させる。UITableView へデータを表示するには最低2つの DataSourceメソッドを実装する必要がある。 - (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section; - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; これらのメソッドを実装するにあたり、まずはテーブルの件数を取得しよう。 ネットで探してみると "Effecient way to count entiti
一行メモの開発に入る。 新規プロジェクトを作成し "Window-based Applicatoin" を選択する。 名前を "OneLiner" とした。 この直後はデフォルトで用意されるアプリケーションデリゲートのクラスが1つできるだけ。 まずはビューを1つ追加してみよう。 新規ファイル作成を選び "UIViewController subclass"を選択する。 名前は "MainViewController" とする。 作成時のオプションで "With XIB for user interface" を入れておく。こうすると自動的にクラスの同名の XIBファイルを作り File's owner をそのクラスにしておいてくれる。 こんな感じ。 これらをつなげる作業に入ろう。 最終イメージはこう。 まずコードにプロパティとアウトレットを追加する。 OneLinerAppDelegate
iPhone3.0から CoreData が使えるとのことだったので OneLiner で使ってみることにする。CoreDataは随分昔に MacOSXで使ったことがあるのでそのときの記事を引っ張りだしてきてコードを書いてみた。 Cocoaの日々(旧) Core Data その1 CoreDataは永続性スタックと呼ばれるいくつかのクラスで構成されていて、利用時にはこれらのインスタンスを用意する必要がある。 (過去記事から引用) コードはこんな感じ(とりあえず awakeFromNib に書いてみた)。 - (void)awakeFromNib { persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[NSManagedObjectModel merged
入手したサンプルコードをビルド(フォルダ: 11 Persistence SQLite) 。 iPhoneシミュレータで動作を確認。入力した文字列が次回起動時にも反映されている。 ソースコードをざっと確認する。 PersistenceViewController まず起動時に viewDidLoad が呼出される。 - (void)viewDidLoad ・SQLite DB にテーブルを作成 (CREATE TABLE) ・保存してあった文字列を取得(SELECT)し、UITextFieldへ設定 ・UIApplicationWillTerminateNotification を登録 DBから取得した文字列を UITextFieldへ設定するのに KVCを使っている。 NSString *fieldName = [[NSString alloc] initWithFormat:@"fie
このページを最初にブックマークしてみませんか?
『(旧) Cocoa Touch の日々』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く