在 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 设备上使用吗

无法在 iphone 3G 上使用 AVAssetWriter 从 UIImage 数组制作电影

在 Windows 10 上使用 VS Code 在 iphone 上调试颤振