在 iPhone 上使用 UISplitViewController 时如何实现推送导航?
Posted
技术标签:
【中文标题】在 iPhone 上使用 UISplitViewController 时如何实现推送导航?【英文标题】:How to implement push navigation when using UISplitViewController on iPhone? 【发布时间】:2014-07-31 21:24:08 【问题描述】:我想实现一个在 iPad 和 iPhone 上运行的UISplitViewController
。在 iPhone 上运行时,我只希望一次在屏幕上显示一个视图控制器,因此当用户点击主视图控制器中的单元格时,它应该推送以显示详细视图控制器。
我在 Interface Builder 中拖出了 UISplitViewController
并让它在 iPad 上运行良好。当我点击一个单元格时,它会通过协议更新详细视图控制器的信息。它只是简单地调用委托上的方法并传递适当的信息,而委托方法只接收传递的数据并重新加载表。因为两者同时出现在屏幕上,所以效果很好。
但是当我在 iPhone 上运行应用程序时,当我选择一行时,这些方法显然仍然被调用,但细节视图控制器没有被推送到屏幕上。当您点击一个单元格时,似乎什么都没有发生。
我的印象是,在 iPhone 上使用拆分视图控制器时,这应该会自动发生,但也许我需要做一些工作以使其按预期运行。
当用户在 iPhone 上运行时选择主视图控制器中的一行时,我要如何将详细视图控制器推送到导航堆栈?
此外,是否有可能使其与 ios 7 兼容,或者我需要在该操作系统上以旧方式进行 - 当用户选择行时,执行 push segue 以显示第二个视图控制器?
【问题讨论】:
【参考方案1】:根据apple docs,你不能在iphone上使用UISplitViewController。
UISplitViewController 类是一个容器视图控制器,用于管理两个并排视图控制器的呈现。您使用这个类来实现一个主从接口,其中左侧视图控制器显示项目列表,右侧显示所选项目的详细信息。 拆分视图控制器仅供 iPad 设备使用。尝试在其他设备上创建一个会导致异常
我要做的是检查它是否是 iPad,并相应地工作。例如,您可以更改代表。
你可以将delegate设置为self
,当它是iphone时,使用与在详细视图中更改信息相同的方法,进行推送并显示数据。
【讨论】:
传统上,拆分视图控制器仅在 iPad 上受支持,直到 iOS 8。现在它们可以在 iPhone 上使用。当在 Storyboard 中实现时,它被编译为在 iOS 7 上运行。(太棒了) 哦,有趣,那我去看看。以上是关于在 iPhone 上使用 UISplitViewController 时如何实现推送导航?的主要内容,如果未能解决你的问题,请参考以下文章
仅在 iphone 11 上显示 UI 图像在其他 iphone 版本上隐藏
无法使用 JavaScript 在 iPhone 上播放声音,但可以在 Android 上播放
在 iPhone 上使用 UISplitViewController 时如何实现推送导航?
苹果 mapkit 在中国可以在 iPhone 设备上使用吗