我是使用拆分视图创建 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 编程,您只需执行此类操作即可将另一个视图控制器推送到堆栈上。但是,使用此模板,它只是将详细视图推送到弹出框上,而不是更新已经存在的内容。我很困惑我需要更新什么才能从弹出窗口中选择一些东西(主详细信息视图),然后更新 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 上的标签文本。但是,当我单击主视图控制器表中的项目时,什么也没有发生。