UISplitViewController的简单应用

UISplitViewController可以用来干嘛?简言之,能让屏幕呈现master-detail风格。

详细说来,它将屏幕分成两个section,在左边这个section显示master view controller,右边这个section显示detail view controller。但在iPhone上有所不同:首先显示的是detail view controller,选择navigation bar 上的back button,可以返回到master view controller。

项目示意图:

Simulator

01

--新建两个文件,命名为MasterViewController和DetailViewController。

--在storyboard里,拖一个SplitViewController出来,将Root View Controller的class设置为MasterViewController,将下面那个ViewController的class设置为DetailViewController。


storyboard

02

Data Model的搭建。新建文件,命名为Hearts。

Hearts.swift

03

MasterViewController的搭建。

--创建一个数组,并对它初始化。

MasterViewController.swift

--添加三个数据源方法。

MasterVIewController.swift

04

DetailViewController的搭建。

DetailViewController.swift

05

建立MasterViewController和DetailViewController之间的联系。

--在MasterViewController.swift里添加代理和协议和相应的方法。

这里的delegate是啥?遵守协议的变量。我的理解是,delegate像传接球的人一样,把从MasterViewController获得的变量接住,再传给DetailViewController。

MasterViewController.swift

在Master-Detail风格的Template中,MasterViewController有一个对DetailViewController的引用,这意味着选中当row被选中时,MasterViewController能将属性set在DetailViewController上。接下来,添加能实现这个的方法。这里实现了两步,第一步是delegate接到从MasterViewController传过来的变量,第二步是View Controller的转换。

MasterViewController.swift

接下来要delegate要做的就是,把接到的变量传给DetailViewController。

--在DetailViewController.swift里添加代码。当row被选中时,DetailViewController的property能随之更新。

DetailViewController.swift

--最后在AppDelegate.swift里的application(_:UIApplication,didFinishLaunchingOptions launchOptions:[NSObject:AnyObject]?)方法里添加以下代码。

AppDelegate.swift

项目完成。


Github项目地址:

GitHub - Paganarchitect/iOS_tutorial_exercises_RayWenderlich: iOS exercises based on Ray Wenderlich tutorial

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容