ios - 在启动时显示主视图,在 "slide over"上显示详细 View

标签 ios uitableview cocoa-touch uikit uisplitviewcontroller

我有一个 Split View Controller ,在水平紧凑模式下,我希望它在启动时显示主视图 Controller 。默认情况下, Split View Controller 将在启动时加载详细 View 。这可以很容易地用这个片段来改变:

func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool {
  return true
}

这对我来说很好,但是当“滑过”一个新 View 并从常规水平宽度变为紧凑 View 时,会显示主视图而不是详细 View 。我希望详细 View 继续显示,因为用户已经选择了它。示例:

Example GIF

然后当我在上面的代码片段中返回 false 时,我得到了所需的滑动行为,但显然现在应用程序将从细节而不是主控开始。 collapseSecondaryfalse 的示例:

Example GIF

有没有办法两全其美?首先展示主视图 Controller ,然后在从常规水平宽度变为紧凑宽度时显示细节 View Controller 。

最佳答案

如果 splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool 试试这个在接口(interface)更改时调用。

func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool {
    BOOL runningInSplitView //do logic check here based on windows bounds
    if(!runningInSplitView)
     return true;
    return false;
}


否则,您必须正确处理使用 optional func primaryViewController(forCollapsing splitViewController: UISplitViewController) -> UIViewController?及其对应物

关于ios - 在启动时显示主视图,在 "slide over"上显示详细 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55937837/

相关文章:

ios - CABasicAnimation 如何获取当前的旋转角度

ios - 具有结构的通用函数

java - 在 Java 中传递对象类型的参数等同于 Obj-C

iphone - OCUnit 使用 UINavigationController 和 UITableView 测试我的应用程序

objective-c - 按下按钮时获取 UITableView 单元格的行

ios - NSMutableURLRequest 和 "request body stream exhausted"错误

iphone - 这些创建和处理数组的方法之间的基本区别是什么?

ios - NSFetchedResultsController "cannot access fetched objects before -performFetch:"调用 objectAtIndexPath : 时崩溃

ios - 是否有一种简单的方法来检查是否存在传递给 NSString 上的 substringWithRange 的 NSRange(这样不会导致错误)?

iphone - 带有从互联网下载的声音的本地通知 - iPhone