UISplitViewController可以用来干嘛?简言之,能让屏幕呈现master-detail风格。
详细说来,它将屏幕分成两个section,在左边这个section显示master view controller,右边这个section显示detail view controller。但在iPhone上有所不同:首先显示的是detail view controller,选择navigation bar 上的back button,可以返回到master view controller。
项目示意图:
Simulator01
--新建两个文件,命名为MasterViewController和DetailViewController。
--在storyboard里,拖一个SplitViewController出来,将Root View Controller的class设置为MasterViewController,将下面那个ViewController的class设置为DetailViewController。
storyboard02
Data Model的搭建。新建文件,命名为Hearts。
Hearts.swift03
MasterViewController的搭建。
--创建一个数组,并对它初始化。
MasterViewController.swift--添加三个数据源方法。
MasterVIewController.swift04
DetailViewController的搭建。
DetailViewController.swift05
建立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项目地址:
网友评论