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つのテキストフィールドがあるが
これをどうやって表示しているのかよくわからない。
次は、このへんを調べてみる。