iphone - iPad UISplitViewController 多 Root View

标签 iphone objective-c ipad

我正在为 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/

相关文章:

iphone - 适用于 iPhone/iPad 的 VPN 客户端

iphone - 高级 iOS 数据库

iphone - 我可以让模拟器慢动作旋转吗?

iphone - 如何在屏幕上绘制 CGImageRef 上下文?

iphone - 类 self 方法

objective-c - 自定义 iOS UILocalNotification 声音不播放(可能与 Xcode 更新有关)

iphone - 关于使用 Slider 观察键值的一些帮助

ios - 从iPhone 5s获取CellID,LAC,PCI,RSRP,RSRQ,SINR 高通MDM9615M基带芯片

ios - 在 Objective-C 项目中导入纯 Swift 框架

iphone - 将日期和时间组合成单个 NSDate 的问题