昨天已经将 addAlarmTableViewCell 在 addAlarmTableView 中注册完毕了,
今天要试着实作 Delegate & DataSource,让他可以正常显示。
首先,需要知道该TableView要由哪个ViewController使用,因此我们必须在addAlarmViewController实作加入以下程序码,
表示 addAlarmTableView 要由 addAlarmViewController实作:
// addAlarmTableView 的 delegate 由目前的ViewController实作
self.addAlarmTableView.delegate = self
// addAlarmTableView 的 由目前的ViewController实作
self.addAlarmTableView.dataSource = self
这时候Xcode会跳出错误:
这个错误意思是,addAlarmTableView 已经知道会由 addAlarmViewController 使用了,
但是 addAlarmViewController 并没有遵守 TableView Delegate & DataSource 的协议,
Q:那要如何遵守协议呢?
A:
加完後就代表addAlarmViewcontroller已经遵守这两个协议了
class AddAlarmViewController: UIViewController, UITableViewDelegate, UITableViewDataSource
这个错误的意思是:您已遵守协议,但协议中有必须实作的Function或是变数,
此时只要按下错误中的「Fix」按钮,就会将必须实作的Function或是变数Show出来了
首先可以看到第一个Function:「numberOfRowsInSection」
这个Function的功能是:一个Section内要显示几个Cell?
参考一下IPhone的闹钟介面:
那这次我们总共只需要显示4个就好,因此可以先将要显示的title跟Details给写成一个阵列:
let addAlarmTitles = ["重复","标签","提示声","重复提醒"]
var addAlarmDetails = ["永不","闹钟","雷达"]
之後在「numberOfRowsInSection」内加上以下程序码:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return addAlarmTitles.count
}
接着实作第二个Functilon:「cellForRowAt」
这个Function的功能是:给个Cell要显示什麽内容?
因此在里面加上以下程序码:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// 告知TableView要使用哪个Cell
guard let cell = tableView.dequeueReusableCell(withIdentifier: addAlarmContentTableViewCell.identifier, for: indexPath) as? addAlarmContentTableViewCell else { return UITableViewCell() }
// 设定Cell的titleLabel内容
cell.titleLabel.text = addAlarmTitles[indexPath.row]
// 设定Cell的contentLabel内容
cell.contentLabel.text = addAlarmDetails[indexPath.row]
}
以上程序码意思如下:
设定完毕後执行程序看看吧!
会发现有东西是有了,但是长得好像怪怪的?
这时候再给他Cell的大小即可
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 50
}
再执行看看吧!
越来越像IPhone内建闹钟了呢
<<: day6: CSS style 规划 - CSS in js
前言 阵列是一种资料结构,里面装载的资料必须是同性质的,不能同时装载着字串又装载着整数,且建立後阵列...
今天做昨天说到file owner的详细实作方法 1. 将设计好的Xib的file owner属性添...
函式应用基础 函式基本语法格式: function+函式的名称+小括号( )+大括号{ }。 小括号...
启动Redis Server # 复制安装档内的redis.conf 到自己指定的路径下 cp /h...
自从上次在街边吃了一碗不怎麽地「杂碎面」,咖哩鱼蛋没鱼味,咖哩又不入味,失败!猪皮煮得太烂,没咬头,...