iPad,主视图中的导航堆栈,在主视图中选择项目并更新详细视图

时间:2011-12-13 09:23:04

标签: navigation ipad master-detail

我正在构建我的第一个应用程序,并一直在寻找答案,但找不到答案。可能是我在搜索中使用的关键字。所以这是我的问题。

这是一款带有主从模板的iPad应用程序(Xcode 4)。主视图应显示类别列表,在选择每个类别后,文章列表将被推送到主视图(导航栏上的后退按钮将返回到类别列表)。

我能够让它在这里工作。选择文章后,我似乎无法使用文章名称更新详细视图中的标签。

这是我在AppDelegate.m中的代码:

MasterViewController *masterViewController = [[MasterViewController alloc] initWithNibName:@"MasterViewController" bundle:nil];
UINavigationController *masterNavigationController = [[UINavigationController alloc] initWithRootViewController:masterViewController];

ArticlesViewController *articlesViewController = [[ArticlesViewController alloc] initWithNibName:@"ArticlesViewController" bundle:nil];
UINavigationController *articlesNavigationController = [[UINavigationController alloc] initWithRootViewController:articlesViewController];

DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
UINavigationController *detailNavigationController = [[UINavigationController alloc] initWithRootViewController:detailViewController];

articlesViewController.mainDetailViewController = detailViewController;

self.splitViewController = [[UISplitViewController alloc] init];
self.splitViewController.delegate = detailViewController;
self.splitViewController.viewControllers = [NSArray arrayWithObjects:masterNavigationController, detailNavigationController, nil];
self.window.rootViewController = self.splitViewController;

如果我更改以下行:

self.splitViewController.viewControllers = [NSArray arrayWithObjects:masterNavigationController, detailNavigationController, nil];

self.splitViewController.viewControllers = [NSArray arrayWithObjects:articlesNavigationController, detailNavigationController, nil];

标签将会更新。

任何指针?我已经看到主视图上的教程连接到详细视图,其中主视图只有一个级别的导航,但似乎找不到模拟我的情况。再说一遍,我可能只是不知道要搜索的关键词。

先谢谢你。

1 个答案:

答案 0 :(得分:0)

我设法通过使用NSNotificationCentre来实现它。

在ArticlesViewController(在MasterViewController中选择类别时显示的第二层)中,我发布了一个本地通知。

在DetailViewController中,我为通知添加了一个观察者。

这样我可以在详细视图中更新标签。

致谢这个精彩的视频教程:http://youtu.be/vnkNUoRtk1E