比较来自世界各地的卖家的域名和 IT 服务价格

如何更新 DetailView 使用应用程序模板 MasterDetail

我是新的要使用divide视图创建应用程序 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, 您只需执行此操作即可将另一个视图控制器推到堆栈中。 但是,在此模板的帮助下,它只需将详细的视图放在弹出窗口“中,不更新已存在的内容。 我对我需要更新的东西困惑,以从弹出窗口中选择内容 /master detail view/, 然后更新 detailView.

更新:

试图测试 "detailItem", 已经为您配置了哪些 DetailViewController, 我评论了 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 必须更新。 但是,当我点击表中的项目时 Master view controller, 什么都没发生。
已邀请:

郭文康

赞同来自:

有几种不同的方法可以做到。 首先,正如您所说,删除挑战
pushViewController

/我不知道为什么模板 Apple 它是......也许只是为了向你展示你能做什么?/.

然后告诉你 MasterViewController 关于 DetailViewController, 已显示。 通常我放了
master.detailViewController = detailViewController


appDelegate

.

记住,那个 DetailViewController 已经显示,所以你并不总是需要重新分配它 /除非您将其替换为其他一些演示文稿/

首先选择

使用委托调用来安装信息。 宣布转移信息的议定书 detailView 并要求他相应地显示。
http://www.raywenderlich.com/1 ... orial
更详细地描述这一点的教科书。

第二选项

经过 DetailViewController 一些数据 & 覆盖 setter, 更新 detailView.
http://www.icodeblog.com/2010/ ... orld/
更详细地描述这一点的教科书。


// in DetailViewController 
- /void/setDetailItem:/id/newDetailItem {
if /detailItem != newDetailItem/ {
[detailItem release];
detailItem = [newDetailItem retain];

// Update the view.
navigationBar.topItem.title = detailItem;
NSString * imageName = [NSString stringWithFormat:@"%@.png",detailItem];
[self.fruitImageView setImage:[UIImage imageNamed:imageName]];
}
}


Edit

: 再次查看模板,以及键入代码
setDetailItem

已经存在,但代码创建了一个全新的 detailView, 以便 detailView, 可以查看哪个 splitViewController, 根本不要改变。

要回复问题请先登录注册