为什么80%的码农都做不了架构师?>>>
UIStoryboard(name: "Main", bundle: nil) 得到故事版文件对象 其中参数name是故事版的名字,可以中info.plist中查找或者就是Main.storyboard文件
1、建一个工程(single view applicatio )
2、删除系统自动生成的viewcontroller场景,拖拽一个 Split View Controller 控件到interface builder上
3、给viewController添加导航栏,(split view controller 控件分栏到两视图可以带导航控制器)
1⃣️一般左边的是(TableViewController的子类)表格视图控制器右边的是普通视图控制器
4、把系统自动生成的类ViewContrlloer.swfit改成DetailViewContrlloer.swfit,
然后将视图控制器与视图类关联起来
5、将左边(TableViewController)的视图控制器中的Cell(得命名标识符)
与右边的视图控制器关联起来,segue,命名segue
6、新建一个视图控制器类(SplitViewController,应该是系统自动识别的),在这个类中的viewdidload方法中 添加一行代码
splitViewController?.preferredDisplayMode = .PrimaryOverlay
这行代码使左边的视图控制器(TableViewController)在右边控制器(ViewController)上面
7、新建一个视图控制器类,让视图控制类与Interface Builder 中的左边视图控制器关联
8、在DetailViewController类中的viewdidload方法中添加如下代码
if splitViewController?.respondsToSelector(#selector(UISplitViewController.displayModeButtonItem)) == true {
navigationItem.leftBarButtonItem = splitViewController?.displayModeButtonItem()
navigationItem.leftItemsSupplementBackButton = true
}
这行代码用来显示这个视图控制器类中左边的按钮的
9、在tableviewcontroller视图控制器类的 prepareForSegue(选中行时触发)方法中写如下代码
if segue.identifier == "ShowDetailIdentifier" {
var detail: DetailViewController
//判断是否时导航控制器
if let navigationController = (segue.destinationViewController as? UINavigationController) {
detail = navigationController.topViewController as! DetailViewController
} else {
detail = segue.destinationViewController as! DetailViewController
}
if let path = tableView.indexPathForSelectedRow {
detail.selectedIndex = path.row + 1
}
}