何回かやっているのにそのたびに完全に忘れきっているのでメモとして残しておく必要を感じた
GUIでの作業
-
ビューの追加
- ファイルツリーを右クリックしてNewFile、CocoaTouchからUIViewController subclassを追加、適切な名前をつける
- Storyboardのファイルを開き、Objects一覧からオレンジの球体のViewControllerをD&Dで追加する
- ViewControllerを選択し、Identity Inspectorで自分が作ったViewControllerの名前を指定する
-
セグエの変更
- NavigationControllerからMasterViewControllerへと延びるRelationship segueを消す
- NavigationControllerから自分が作ったViewControllerにRelationship segueを接続する
- 自分が作ったViewControllerにボタン等を追加し、それをMasterViewControllerへ接続する
-
セグエの接続は二本指ドラッグもしくはctrl+ドラッグし接続先でドロップすることで接続できる
コードの変更
- managedObjectContextの取得方法を変更
- AppDelegate.mのなかで初期化時にmanagedObjectContextをMasterViewControllerに渡すようなコードを書いてあるのを消す
- MasterViewControllerのmanagedObjectContextプロパティを@dynamicに変更し、AppDelegateインスタンスのmanagedObjectContextを取得するようなコードに変更する
AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
//UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
//MasterViewController *controller = (MasterViewController *)navigationController.topViewController;
//controller.managedObjectContext = self.managedObjectContext;
//MasterViewController *controller = (MasterViewController *)navigationController.topViewController;
return YES;
}
MasterViewController.h
@property (nonatomic, readonly) NSManagedObjectContext * managedObjectContext;
@property (strong, nonatomic) NSFetchedResultsController *fetchedResultsController;
MasterViewController.m
# import "AppDelegate.h"
@implementation MasterViewController
@dynamic managedObjectContext;
@synthesize fetchedResultsController=__fetchedResultsController;
- (NSManagedObjectContext *)managedObjectContext {
AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
return appDelegate.managedObjectContext;
}
- editボタンをなくす
- MasterViewControllerの初期化時に左側のボタンを戻るボタンからEditボタンに変更するようなコードが書いてあるのを消す
MasterViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// Set up the edit and add buttons.
// self.navigationItem.leftBarButtonItem = self.editButtonItem;
UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(insertNewObject)];
self.navigationItem.rightBarButtonItem = addButton;
}