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既可回传值,还能把附近的值回传出去
  • 封闭可以跟阵列配合使用
  • 关闭简写步骤
  1. 如果已经知道参数跟回传值的型别的话,可以省略closure里的参数和型别
  2. 如果closure有回传值,而且程式码是一行的话,可以省略return
  3. 可以用$ 0或$ 1…等代表参数
  4. 如果closure是最后一个参数的话,可以把closure写在小括号外面
  5. 如果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