如何从 rootViewController 中的多级导航更新 detailViewController.detailItem
Posted
技术标签:
【中文标题】如何从 rootViewController 中的多级导航更新 detailViewController.detailItem【英文标题】:How to update detailViewController.detailItem from multi-level nav in rootViewController 【发布时间】:2011-01-26 20:08:52 【问题描述】:这是我的第一篇文章,所以请轻点。
我在 xcode 中使用基本的基于拆分视图的应用程序,但已对其进行了编辑,以便 rootViewController 不会简单地更新 detailViewController,而是将新的 UITableViewController (taskViewController) 推送到导航堆栈上。
我的问题是,当我现在从我的 taskViewController 调用以下命令时,什么也没有发生:
detailViewController.detailItem = [NSString stringWithFormat:@"Row %d", indexPath.row];
如果我从 rootViewController 调用它,而不是将新的 UITableView 推送到堆栈上,它可以工作。
这是我在选择单元格时来自 rootViewController 的代码:
- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
TaskViewController *taskViewController = [[TaskViewController alloc] init];
taskViewController.title = [NSString stringWithFormat:@"Unit %d",indexPath.row];
[self.navigationController pushViewController:taskViewController animated:YES];
[taskViewController release];
我在这里做错了吗?我是否在 UISplitViewController 的 rootViewController 中正确使用了导航控制器?
【问题讨论】:
【参考方案1】:您的 rootViewController 可以访问 detailViewController,因为它具有对它的引用。如果您将新控制器推送到导航堆栈,那么它不会自动了解 DetailViewController。
你有NSLog
'd detailViewController
在你的taskVC中看看它是否有一个指针?
您通常会在创建它时这样设置:
- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
TaskViewController *taskViewController = [[TaskViewController alloc] init];
taskViewController.title = [NSString stringWithFormat:@"Unit %d",indexPath.row];
taskViewController.detailViewController = self.detailViewController;
[self.navigationController pushViewController:taskViewController animated:YES];
[taskViewController release];
【讨论】:
太棒了!我只是假设 UISplitViewController 负责所有这些。谢谢 它确实做到了,就基本的根和详细的 VC 而言,但在那之后你自己的 dw,当你开始时,这是一个常见的错误。不过我应该警告你,splitViewControllers 也有其他问题,不过我会让你自己完成这个旅程。NSLog
是你的朋友。以上是关于如何从 rootViewController 中的多级导航更新 detailViewController.detailItem的主要内容,如果未能解决你的问题,请参考以下文章
如何从推送的控制器中获取 RootViewController?
如何将 RootViewController 设置为 SplitViewController 中的分组表
从 rootViewController 设置 UILabel 文本
Swift - 当应用程序进入后台状态时,从 AppDelegate 更新 RootViewController 中的值
如果 UITabbarcontroller 不是 rootviewcontroller,如何从 Appdelegate 为 UIBarButtonItem 设置徽章(无论何时推送通知)?