Day 2 - TableView
2016-09-07 本文已影响45人
Codepgq
先上效果图
效果图1、搭建UI
新建工程后,在Main.Stroyboard中拖入一个TableView和一个Button,设置约束,颜色后如下:
UI效果图
2、拖线
先拖属性
属性
依次拖线
tableVIew,button
最后在为button添加Action、
button
OK 布局到这里就完成了
3、创建数据源、设置代理、实现代理方法,设置按钮样式
- 3.1 创建数据源
var data : Array? = ["Day 2 TableView", "每天学习多一点", "每天累积一点点", "暗号:天王盖地虎", "🤗 😡 💔See you next Project", "Learning Swift","纸巾艺术","参考网络学习资料"]
解释:创建了一个变量名为data,类型为数组的数据源
- 3.2 设置代理
tableView.dataSource = self
tableView.delegate = self
这个时候会报错,找不到delegate、dataSource
导入代理
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource
这个时候还是会报错,因为没有实现代理
- 3.3 实现代理
在tableView中必须实现的代理有两个:
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return data!.count
}
第一个在某个section内有多少个Cell,如果不实现
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
这里返回有多少个section
}
return data!.count 返回data的个数
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("FontCell", forIndexPath: indexPath)
let text = data![indexPath.row]
cell.backgroundColor? = UIColor.blackColor();
cell.textLabel?.text = text
cell.textLabel?.textColor = UIColor.whiteColor()
return cell
}
line 1:let cell... 这个是用复用池中获取cell 是用这个方法必须要提前注册,否则会报错
所以还需要在设置Viewdidload中写上:
tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "FontCell");
这里注意Identifier这个参数名中的字符串要保持一致
let text:这里从数组中获取数据
back..Color:设置背景颜色
t..Label.text :设置文字
...textColor:文字颜色
3.4 设置按钮样式
changeBtn.layer.cornerRadius = 50
这里设置成为你按钮宽度的一半,宽高保持一致
比如宽高 100 100 那么久设置 50
<br />
此时你运行就能看到效果了,但是你点击按钮还不能改变字体
<br />
4、改变字体
我们并不知道有哪些字体,系统提供的字体很多,我们可以用过一个方法遍历出来
for family in UIFont.familyNames() {
for font in UIFont.fontNamesForFamilyName(family){
print(font)
}
}
这个for循环能把所有的字体名称遍历出来,我们只要从里面随便抽取几个名称组成一个数组,然后每次点击对tableView.cell设置不同的字体,并且刷新就能看到效果了
var fontNames = ["MFJinHei_Noncommercial-Regular", "PingFangSC-Thin", "KhmerSangamMN","Baskerville-SemiBold","Cochin-BoldItalic"]
在设置颜色后面添加
在申明两个变量
var fontRowIndex = 0
var add = 0
....textColor = UIColor.whiteColor()
cell.textLabel?.font = UIFont(name:self.fontNames[fontRowIndex], size:20)
现在只需要在按钮的点击事件中处理就行了
@IBAction func change(sender: UIButton) {
add += 1
fontRowIndex = add % fontNames.count;
tableView.reloadData();
}
tableView.reloadData();刷新
到这里就完成啦,赶紧运行看一看吧!