Swift 3.0课程笔记—关闭和搜索显示
主讲人:魏炜
关闭
- Closure是没有名字的(func)函式
- 闭包在Swift是一个值,有型别,属参考类型
- 把函式写成Closure的步骤:
- 1.把名字删掉,存进一个变数
- 2.把参数和回传值放进大括号里面,加上关键字“ in”
//功能//
func addClosure(number1:Int,number2:Int)-> Int {
数字1 +数字2
返回结果
}
//关闭//
让addClosure:(Int,Int)-> Int = {
(数字1:整数,数字2:整数)->整数
令结果=数字1 +数字2
返回结果
}
- 闭包当当某函式的参数
- 闭包当当某函式的回传值
- Closure既可回传值,还能把附近的值回传出去
- 封闭可以跟阵列配合使用
- 关闭简写步骤
- 如果已经知道参数跟回传值的型别的话,可以省略closure里的参数和型别
- 如果closure有回传值,而且程式码是一行的话,可以省略return
- 可以用$ 0或$ 1…等代表参数
- 如果closure是最后一个参数的话,可以把closure写在小括号外面
- 如果closure是唯一一个参数的话,可以省略小括号
///筛选有文字“ o”
进口基金会
fruitArray.filter({
(水果:字符串)-> Bool in
返回fruit.contains(“ o”)
})
///省略版
fruitArray.filter {$ 0.contains(“ o”)}
git@github.com:dan12411 / HelloClosureBasic.git
搜索显示
- 架构上先有一个TableViewController(即SearchTableViewController)
- 设置资料来源Array — appleProducts
- 设置Delegate的部分,行,单元格
- 再来是重头戏:
- 需要补充一UISearchResultsUpdating的协议
- 需要补充一UISearchController用于执行搜寻工作的类别
- 需要添加一UITableViewController用于显示搜寻结果
- 需要新增一阵列储存搜寻结果
- 实作UISearchResultsUpdating下一个的函式updateSearchResults产生搜寻结果&重新整理资料,会使用到可选的绑定,数组的过滤器方法和小写字母
- TableDataSource部分
- 用if…else区隔SearchTableViewController和ResultTableController的资料
- viewDidLoad()部分
- 产生searchController,指定用resultController显示搜寻结果
- 连结SearchTableViewController
- 设定搜寻时,取消反灰
- 设定显示搜寻结果的tableView负责告诉显示结果的tableView要显示什么资料
- viewWillAppear()部分
- 把tableView降下20
- 把搜寻栏加到Header
git@github.com:dan12411 / HelloSearchResultsController.git