IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> iOS14+Swift5.x+Xcode12学习笔记(1)——Stroyboard(一)简介 -> 正文阅读

[开发工具]iOS14+Swift5.x+Xcode12学习笔记(1)——Stroyboard(一)简介

Storyboard优势

可视化的设计APP页面以及控制页面间的切换。Xcode项目中会预设两个Storyboard页面,一个是Main.storyboard,是APP默认的首页面,可以在这里设计页面之间的切换。另一个是LaunchScreen.storyboard,是APP一开始载入时的欢迎界面(tips:一般不涉及太复杂的逻辑以好看为主,这里不作讨论)。
Storyboard帮助我们省去了页面中控件的创建,但是具体的逻辑仍需要代码实现。Storyboard在开发中,往往扮演连接可视化控件和代码的中间角色。因此Storyboard可以做到:(一)连接控件发出的各种事件,例如点击、键盘输入等(二)可以唯一标识一个控件,例如为控件取名(相当于声明变量),这样才能通过代码定位到我们想要操作的控件,改变控件的属性。

操作控件

直接用鼠标拉蓝线到某一ViewController中,输入名字就完成了命名,相当于声明了一个控件变量,Xcode会自动帮我们转成一个特殊类型的属性——IBOutlet属性。如果想要拦截某一控件的事件,同样采取拉线的方式,也会被转为一个特殊方法——IBAction方法,当事件触发时,这个方法就会被调用。(进入辅助编辑模式快捷键:control+option+command+enter 一只手刚刚够0.0)

视图控制器与视窗

APP中,不同界面的切换其实是切换视图控制器而不是视窗。一个APP通常只有一个视窗(类型为UIWindow),视窗上有一个视图控制器,视图控制器上可以放置不同的视图,也就是各种控件。

界面切换Segue

Storyboard中,将某一ViewController中的控件拉线至另一ViewController就定义了ViewController之间的切换。切换方式分为多种,如show(全屏幕方式切换,由导航控制器控制);show detail(通常用于分屏);present modally(多样化的切换方式);present as popover(小弹窗方式)。
通过给Segue命名的方法,可以在prepare(for:sender:)函数中作一系列操作。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
	if segue.identifier == "你设定的segue名字" {
		let vc = segue.destination as! UIViewController//可以通过segue.destination 获取要跳转的下一个ViewController。这里将其转成UIViewController类型或者自定义的ViewController类型(取决于你需要获取的界面的类型),赋值给变量vc,通过vc就可以传递参数。
		//注意此时不能直接操作下一页面内的控件,因为此时控件还未产生,但是可以给属性赋值。
		vc.value = "hello world"
	}	
}

Unwind Segue用于返回上一个页面,在Storyboard中,将一个控件(如按钮)拉线到另一个ViewController的Exit按钮上,就可以选择unwindFor:这个函数,之后为其命名,就可以在unwind函数中进行一系列操作。注:unwind函数并不能拉线产生,但是其前面仍需要加上@IBAction,unwind函数名称可以自定义,但是参数类型必须是UIStoryboardSegue。

@IBAction func unwind(for segue: UIStoryboardSegue) {
	if segue.identifier == "你设定的segue名字" {
		let vc = segue.source as! UIViewController
		vc.value = "hello world"
	}	
}

通过代码切换界面

Segue切换界面虽然容易,但是APP中的界面逻辑较为复杂时,segue的结构同样会变得非常复杂难以维护,因此通常通过代码的方式来进行界面之间的切换。而且有些ViewController是不支持segue切换方式的,例如PageViewController。
首先新建一个MyViewController类。之后在Stroyboard中新建一个ViewController,设置其Class属性为MyViewController(可以理解为将该ViewController交由MyViewController类管理),设置Identity中的Storyboard ID(名字任取,例如newVC)。在另一个ViewController中,创建一个控件(以按钮举例),用拉线的方式拦截按钮的onClick事件。

@IBAction func onClick(_ sender: Any) {
	let vc = storyboard?.instantiateViewController(withIdentifier: "newVC")//这个函数可以理解为从Storyboard中解析出一个ID为newVC的ViewController,并获取这个对象。
	show(vc!, sender: self)//show函数完成跳转
	// 除了使用show函数之外,也可以使用showDetailViewController函数。区别是show函数跳转后会保留导航栏,在新界面左上角出现返回按钮。	
}
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-11-26 09:03:29  更:2021-11-26 09:03:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 18:49:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码