iPhone Appのサンプルコード SQLiteBooksのソースを読む - 4.「New Book」画面の動作を確認する
「Book List」画面の「+」ボタンのアクションは、MasterViewControllerのaddBookになっている。
MasterViewController.m
- (IBAction)addBook:(id)sender { AddViewController *controller = self.addViewController; controller.book = [[[Book alloc] init] autorelease]; if (addNavigationController == nil) { UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:controller]; self.addNavigationController = navController; [navController release]; } [self.navigationController presentModalViewController:addNavigationController animated:YES]; [controller setEditing:YES animated:NO]; }
MasterViewControllerのaddBookで何をやっているか?
ここで何をやっているんか?
AddViewController *controller = self.addViewController;
AddViewControllerのaddViewControllerは下記のようになっている。
addViewController = [[AddViewController alloc] initWithNibName:@"DetailView" bundle:nil];
でNibファイルの"DetailView"を指定しているので、AddViewControllerに紐づくxibファイルはDetailView.xibになるようだ。
AddViewController.m
- (AddViewController *)addViewController { NSLog(@"MasterViewController#addViewController") ; // Instantiate the add view controller if necessary. if (addViewController == nil) { addViewController = [[AddViewController alloc] initWithNibName:@"DetailView" bundle:nil]; } return addViewController; }
AddViewControllerのviewDidLoadメソッドを確認すると
画面のタイトルを"New Book"に設定し、CancelボタンとSaveボタンのアクションをselfのcancelとsaveに設定しているようだ。
AddViewController.m
- (void)viewDidLoad { // Override the DetailViewController viewDidLoad with different navigation bar items and title self.title = @"New Book"; self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancel:)] autorelease]; self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(save:)] autorelease]; }
大分、動きが見えてきた。
あとは「New Book」画面にはTitle、Copyright、Authorの3つのテキストフィールドがあるが
これをどうやって表示しているのかよくわからない。
次は、このへんを調べてみる。