iPadアプリケーションを作成するために分割ビューを使用するのは初めてです。標準のMasterDetailアプリケーションテンプレート(Xcode 4.2)を使用してプロジェクトを最初に作成すると、MasterViewControllerとDetailViewControllerが作成されます。テンプレートには、ポップオーバーテーブル(マスター詳細ビューコントローラ)から行が選択されたときに呼び出される次のメソッドがあります。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
if (!self.detailViewController)
{
self.detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
}
[self.navigationController pushViewController:self.detailViewController animated:YES];
iPhone用にプログラミングしている場合、通常のナビゲーションコントローラーを使用しているときに、このタイプの操作を実行して、別のViewControllerをスタックにプッシュすることを理解しました。ただし、このテンプレートでは、既存のものを更新するのではなく、詳細ビューをポップオーバーにプッシュするだけです。ポップオーバー(マスター詳細ビュー)から何かを選択し、detailViewを更新するには、何を更新する必要があるのか混乱しています。
アップデート:
DetailViewControllerですでに設定されている「detailItem」をテストするために、pushViewControllerをコメントアウトして、以下を追加しました。
//[self.navigationController pushViewController:self.detailViewController animated:YES];
self.detailViewController.detailItem = @"Test";
// setter in detailViewController
- (void)setDetailItem:(id)newDetailItem
{
if (_detailItem != newDetailItem) {
_detailItem = newDetailItem;
// Update the view.
[self configureView];
}
if (self.masterPopoverController != nil) {
[self.masterPopoverController dismissPopoverAnimated:YES];
}
}
- (void)configureView
{
// Update the user interface for the detail item.
// detailDescriptionLabel.text is a IBOutlet to the label on the detailView
if (self.detailItem) {
self.detailDescriptionLabel.text = [self.detailItem description];
}
}
このコードによると、detailViewControllerのラベルのテキストを更新する必要があります。ただし、マスタービューコントローラテーブルの項目をクリックしても何も起こりません。