UISplitViewController可以用来干嘛?简言之,能让屏幕呈现master-detail风格。
详细说来,它将屏幕分成两个section,在左边这个section显示master view controller,右边这个section显示detail view controller。但在iPhone上有所不同:首先显示的是detail view controller,选择navigation bar 上的back button,可以返回到master view controller。
项目示意图:
01
--新建两个文件,命名为MasterViewController和DetailViewController。
--在storyboard里,拖一个SplitViewController出来,将Root View Controller的class设置为MasterViewController,将下面那个ViewController的class设置为DetailViewController。
02
Data Model的搭建。新建文件,命名为Hearts。
03
MasterViewController的搭建。
--创建一个数组,并对它初始化。
--添加三个数据源方法。
04
DetailViewController的搭建。
05
建立MasterViewController和DetailViewController之间的联系。
--在MasterViewController.swift里添加代理和协议和相应的方法。
这里的delegate是啥?遵守协议的变量。我的理解是,delegate像传接球的人一样,把从MasterViewController获得的变量接住,再传给DetailViewController。
在Master-Detail风格的Template中,MasterViewController有一个对DetailViewController的引用,这意味着选中当row被选中时,MasterViewController能将属性set在DetailViewController上。接下来,添加能实现这个的方法。这里实现了两步,第一步是delegate接到从MasterViewController传过来的变量,第二步是View Controller的转换。
接下来要delegate要做的就是,把接到的变量传给DetailViewController。
--在DetailViewController.swift里添加代码。当row被选中时,DetailViewController的property能随之更新。
--最后在AppDelegate.swift里的application(_:UIApplication,didFinishLaunchingOptions launchOptions:[NSObject:AnyObject]?)方法里添加以下代码。
项目完成。
Github项目地址: