『Audio帳(仮)』開発 その2 CoreDataとRootのViewControllerと
Core DataはSingletonにしておく
Core Dataを有効にしてプロジェクトを作ったので、AudioCardsAppDelegateにCoreData関連の処理がデフォルトで入ってる。
ただ、Core Dataへのアクセスはこのアプリのいろんな場所で使う予定だから、Singletonパターンで別に移しておいた方がいいと思う。
NSObjectを継承したAudioCardsを追加。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#import
@interface AudioCards : NSObject {
}
@property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel;
@property (nonatomic, retain, readonly) NSPersistentStoreCoordinator *persistentStoreCoordinator;
+ (id)instance;
- (void)saveContext;
- (NSURL *)applicationDocumentsDirectory;
@end |
staticなinstanceメソッドで、アプリ内でユニークになるAudioCardsクラスの実態にアクセスさせる。
AudioCardsAppDelegateのほうのCore Data部分は削除。
applicationWillTerminateでsaveContextしてるところは残す。
|
1 2 3 4 |
- (void)applicationWillTerminate:(UIApplication *)application
{
[[AudioCards instance] saveContext];
} |
ルートになるViewControllerを実装
ルートになるビューにはオーディオブックのアルバムの一覧を表示させる予定。
なので名前は「AlbumListViewController」にする。
TableViewControllerを継承させて作る。xibは無し。基本xibは使わないで進めていく。
最新のXcodeはInterfaceBuilderも統合されて使いやすそうな気もするけどいいや。
リストを表示するから、Edit関連のメソッドは削除。
とりあえずセルを表示するように、sectionを1、rowを10で返すようにする。
WindowにAlbumListViewControllerを。Navigation付きで。
iPhoneでの実行時にAppDelegateとして使われるAudioCardsAppDelegate_iPhoneクラス。
そいつにapplication:didFinishLaunchingWithOptionsを実装する。
そのメソッドでwindowのrootViewControllerに、AlbumListViewControllerをrootViewControllerにしたUINavigationControllerを設定してやる。
ついでにNavigationBarとToolbarのスタイルを黒(UIBarStyleBlack)にしておく。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[super application:application didFinishLaunchingWithOptions:launchOptions];
AlbumListViewController *controller = [[[AlbumListViewController alloc]init]autorelease];
UINavigationController *navigationController = [[[UINavigationController alloc]initWithRootViewController:controller]autorelease];
navigationController.navigationBar.barStyle = UIBarStyleBlack;
navigationController.toolbar.barStyle = UIBarStyleBlack;
self.window.rootViewController = navigationController;
return YES;
} |
