[Xcode 实际操作]九、实用进阶-(23)多个Storyboard故事板中的页面跳转
本文将演示多个Storyboard故事板中的页面跳转。
使用快捷键【Command】+【N】创建一个新的故事板文件。
(在项目文件夹【DemoApp】上点击鼠标右键【New File】创建)
->【Storyboard】->【Next】->【Save As】:Storyboard.storyboard
->保存默认的存储位置点击【Create】
新添加的当前故事板中还没有添加视图控制器,
点击【库图标】,打开控件库面板,
在【View Controller】视图控制器上双击,往故事板中插入第一个视图控制器。
现在故事板中,已经拥有了一个视图控制器,点击视图控制器下方的【模型尺寸列表】
在弹出的设备控制器列表中,选择一个小型的设备,以调整故事板中的控制器的尺寸,
使故事板可以在一屏范围内,显示更多的控制器。
点击【库图标】,打开控件库面板,
在【View Controller】视图控制器上双击,往故事板中插入第二个视图控制器。
点击【显示或隐藏检查器】图标,打开右侧的检查器面板。
点击【身份检查器图标】进入身份检查器面板。
【Storyboard ID】:servicePage,即输入第二个视图控制器在故事板中的标识。
将在下文中通过这个标识,获得该视图控制器。
在故事版左侧的文档框架区域,选择第一个视图控制器。
点击【属性检查器】图标,打开属性设置面板。
勾选【Is Initial View Controller】是否初始视图控制器复选框。
设置第一个视图控制器为当前控制板的视图控制器。
然后选择视图控制器中的根视图,往根视图中添加控件。
点击【库图标】,打开控件库面板,
在【Button】按钮控件上双击,往根视图插入一个按钮控件。
在按钮定界框的左侧按下手指,以调整按钮的宽度。
设置按钮的标题文字,【Tile】下方输入框:Back。
使用快捷键【Command】+【N】创建在故事版中,第一个视图控制器对应的类文件。
(在项目文件夹【DemoApp】上点击鼠标右键【New File】创建)
->【Cocoa Touch Class】->【Next】->
【Class】:ServiceViewController。输入类名。
【Subclass of】:UIViewController,父类名称
【Language】:Swift,类文件的默认语言
->【Next】->保存默认的存储位置点击【Create】
在项目导航区,打开并编辑上文创建的故事版文件【Storyboard.storyboard】
然后选择第一个视图控制器,给视图控制器指定对应的类文件。
点击身份检查器图标,进入身份检查器面板。
【Class】:ServiceViewController,即输入刚刚创建的类文件的名称。
这样故事板中的视图控制器,就和类文件进行了绑定和连接。
点击【显示或隐藏辅助编辑器】图标,打开辅助编辑器。
选择控制器中的按钮控件,需要将按钮控件,与绑定的类文件的方法进行连接。
在按钮上点击鼠标右键,然后拖动到右侧的代码文件中。
(两个方法:1.鼠标右键 2.【Command】+鼠标左键)
设置:
【Connection】:Action
【Name】:goBack
点击【Connect】完成按钮的连接设置。
在项目导航区,打开视图控制器的代码文件【ServiceViewController.swift】
1 import UIKit 2 3 class ServiceViewController: UIViewController { 4 5 @IBAction func goBack(_ sender: Any) { 6 //当用户点击按钮时,导航控件将返回上一页 7 self.navigationController?.popViewController(animated: true) 8 } 9 override func viewDidLoad() { 10 super.viewDidLoad() 11 12 // Do any additional setup after loading the view. 13 } 14 }
点击显示标准编辑器按钮,恢复默认的编辑器界面。
打开并查看主故事版【Main.storyboard】的内容。
视图控制器中有三个跳转按钮,当用户点击不同的按钮时,跳转到不同的页面。
在项目导航区,打开视图控制器的代码文件【ViewController.swift】
编写代码,实现按钮控件的连接方法。
1 import UIKit 2 3 class ViewController: UIViewController { 4 5 //现在为第二个按钮添加点击事件 6 @IBAction func gotoPage1OfStoryboard(_ sender: AnyObject) { 7 //从项目中,获得指定名称的故事版文件 8 let storyBoard = UIStoryboard(name: "ServiceStoryboard", bundle: nil) 9 //获得故事板中的初始视图控制器 10 let vc = storyBoard.instantiateInitialViewController() 11 12 //在当前的页面中,跳转到指定的视图控制器 13 self.navigationController?.pushViewController(vc!, animated: true) 14 } 15 16 //现在为第三个按钮添加点击事件 17 @IBAction func gotoPage2OfStoryboard(_ sender: AnyObject) { 18 //从项目中,获得指定名称的故事版文件 19 let storyBoard = UIStoryboard(name: "ServiceStoryboard", bundle: nil) 20 //根据上文给视图控制器设置的故事版标识,获得对应的故事版控制器 21 let vc = storyBoard.instantiateViewController(withIdentifier: "servicePage") 22 23 //在导航控制器中,从当前的页面跳转到指定的视图控制器 24 self.navigationController?.pushViewController(vc, animated: true) 25 //在页面进行跳转的同时,隐藏底部的标签栏 26 self.tabBarController?.tabBar.isHidden = true 27 } 28 29 override func viewDidLoad() { 30 super.viewDidLoad() 31 // Do any additional setup after loading the view, typically from a nib. 32 } 33 34 override func didReceiveMemoryWarning() { 35 super.didReceiveMemoryWarning() 36 // Dispose of any resources that can be recreated. 37 } 38 }