Swift之分割视图控制器-UISplitViewController

本文深入探讨了Swift中UISplitViewController的使用,特别是在iPad上的应用。介绍了如何在横向模式下展示选择表和详细信息视图,以及纵向模式下的视图调整。提供了AppDelegate中的配置代码示例,展示了如何设置和管理UISplitViewController的显示模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Swift之分割视图控制器-UISplitViewController

UISplitViewController这种控制器只能用于iPad,它可以在iPad屏幕中显示两个不同的场景:在横向模式下,左边显示一个表,供用户选择;用户选择表中的元素后,详细视图将显示该元素的详细信息。如果iPad被旋转到纵向模式,表将消失,而详细视图将填满整个屏幕;要进行导航,用户可触摸一个工具栏按钮,这将显示一个包含表的弹出框。

默认情况下,UISplitViewController的一端连接到一个受导航控制器(UINavigationController)管理的表视图(UITableViewController),这代表主场景;另一端连接到一个普通视图控制器(UIViewController),这代表详细场景。

AppDelegate中的代码如下:

func application(

    application: UIApplication,

    didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?)

    -> Bool

{

    let splitViewController = window!.rootViewController as! UISplitViewController

    let navigationController = splitViewController.viewControllers.last as! UINavigationController

    navigationController.topViewController!.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem()

    splitViewController.delegate = self

 

    return true

}

// MARK: - UISplitViewControllerDelegate

func splitViewController(

    splitViewController: UISplitViewController,

    collapseSecondaryViewController secondaryViewController: UIViewController,

    ontoPrimaryViewController primaryViewController: UIViewController)

    -> Bool

{

    if let secondaryAsNavController = secondaryViewController as? UINavigationController {

        if let topAsDetailController = secondaryAsNavController.topViewController as? DetailViewController {

            return topAsDetailController.request == nil

        }

    }

 

    return false

}


可以将主场景和详细场景替换为新的控制器,只需要删除默认的控制器,然后按住Control键,并从分割视图控制器对象拖曳到新的主场景或详细场景,再在Xcode提示时选择Relationship - masterViewController或Relationship - detailViewController。



 


主场景和详细场景可以通过分割视图控制器互相访问,属性splitViewController包含一个名为viewControllers的数组。通过使用NSArray的方法lastObject,可获取该数组的最后一个元素(详细信息视图)。通过调用方法objectAtIndex,并将索引0传递给它,可获取该数组的第一个元素(主视图)。这样,两个视图控制器就可交换信息了。
给大家分享一下Alamofire的使用 https://github.com/Alamofire/Alamofiredemo里面用的就是UISplitViewController哦,(  _)/~~拜拜


链接:https://www.jianshu.com/p/28be9031d03a

转载于:https://www.cnblogs.com/sundaysme/p/10341466.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值