我正在为 iPad 开发并使用 Xcode 中提供的模板创建了一个标准的 UISplitViewController 应用程序 - 左侧是标准 UITableView,右侧是详细 View 。
我已经修改了模板,以便当用户从左侧 View 中选择一个表格单元格时,它会在其位置(仍在左侧)推送一个新的表格 View 。这没有问题,但我希望能够从新的 TableView 更新现有的详细信息 View - 有点像 Apple 的邮件应用程序的工作方式。
- 我没有尝试在详细信息 View (右侧)上创建多个 View - 我已阅读文档并查看了 Apple 提供的示例代码。
我阅读/遵循了许多教程,但似乎无法让这个相对简单的 View 层次结构发挥作用。
更多细节:-
在 RootView didSelectTableRowAtIndexPath 委托(delegate)方法中使用 detailViewController.detailItem = @"Test";
更新详细 View 标签。在新推出的表格 View 中使用完全相同的代码不会更新标签 - 我是否缺少引用点或其他内容??
自发布以来,我尝试使用协议(protocol)和委托(delegate)来更新详细 View 上的标签。当使用新方法从 Root View 更改标签时,标签会正确更新,但是,当我将新 View 推送到 Root View (左侧)时,我无法再更新标签。
最佳答案
在创建 RootViewController 之后的某个时候(或者甚至可能在自定义 init 方法中),您正在为 DetailViewController 设置委托(delegate),这是一个常见的错误,当一个新的 rootViewController 被推送到 NavController 上时,您忘记设置委托(delegate)再次。
您可能正在以下位置创建一个新 Controller :
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
方法和在将新 Controller 推送到 navController 之前记录/增加新 Controller 的级别。创建这个新 Controller 后,再次设置委托(delegate)。
newRootController.myDelegate = self.myDelegate;
在你这样做之前如果你在使用它之前对委托(delegate)进行 NSLog,你可能会发现它为 nil。
关于iphone - iPad UISplitViewController 多 Root View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3813570/