我们今天的任务:使用TableView来创建联系人的基础列表项目
知识点目录:
1. TableView和TableViewCell的配置使用
2. ViewWithTag来定位View的方法
有了以前的一些课程的基础,我们现在对于简单的页面架构已经能做到支持了,这节课,我们准备仿写联系人列表
1、先创建一个联系人Tab,并且把图标都换好,这部分内容我这里不讲了,还不知道怎么建立Tab和关系的可以参看我上节课的内容,复习一下,新学的同学当作作业来做把.
Contact标签页2. 找到Main.storyboard. 将TableView(从元件库中找),拖到Contact这个ViewController的,并铺满怎么SafeArea.
将TableView拖入Contact3. 拖入TableViewCell(从元件库里找)到表格里
拖入TableViewCell4. 选中TableViewCell,勾选Custom,设置行高为55.
设置TableViewCell行高5. 将ImageView拖入TableViewCell,并设置尺寸
设置ImageView我们Cell设置的高度为55,我们让头像距离屏幕边缘15像素,距离表格线顶部5像素,那么头像高度和宽度都设置为45像素
6. 拖入Label准备用来设置用户名,注意将Label 设置得长一点,避免出现长一点的名字无法显示的问题
设置Label7. 建立Contact的ViewController:File -> New -> File(或者快捷键:command + N)
新建文件8. 选择Cocoa Touch Class. 点击下一步
创建Cocoa Touch Class9. Subclass of 选择:UITableViewCell,然后输入这个“类”的名字:ContactTableViewCell、点击下一步,选择文件夹,完成创建
创建ContactTableViewCell10. 选中Main.storyboard,然后选中tableViewCell. 切换到属性设置页面,将Class指定为刚刚创建的Class文件
将Cell与类关联上11. 我们重用这个Cell,选中Cell,并且设置identifier为contactTableViewCell.
设置重用identifier我们创建的Cell是要用来做联系人的,每一联系人都是一样的Cell(一个ImageView用来做头像,一个Label用来设置用户名),区别只是不同的人头像不同,名字不同,所以这些Cell都是需要重用的,
12. Comand + N 新建一个Subclass of 为“ UIViewController“ 的 ViewController,命名为“ContactViewController")
新建ContactViewController13. 选中Main.storyboard,然后选中Contact这个ViewController. 切换到属性设置页面,将Class指定为刚刚创建的Class文件(ContactViewController)
设置Class文件14.设置TableView的delegate和dataSource: 从TableView右键拖动到Contact上,然后松手,选中“delegate” 和 “dataSource"
关联dataSource和delegate15. 选中ContactViewController.swift. 增加继承类协议“UITableViewDelegate"和“UITableViewDataSource",
设置继承协议类 点击Fix以后,工具会自动添加如上代码添加完成这两个协议以后,工具会提示错误,这个错误是要求你设置表格的cell和cell数量的,点击“Fix”即可直接生成对应的方法
16. 假定我们准备设置10个联系人,那么我们将 numberOfRowsInSection这个方法设置为10个,代码如下
设置代码func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10 // 设置联系人的个数
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "contactTableViewCell", for: indexPath) as UITableViewCell // 使用第11步中设置的identifier定义一个cell,并将这个cell返回,以此达到我们定义的表格的cell和表格关联起来的目的
return cell
}
17. 准备10个头像,把他们都放到“Assets.xcassets“里,并依次命名为defualt1 ~ defualt10
准备10个头像18. 依次设置ImageView和Label 的tag,分别设置为666,和 667
设置tag19. 找到ContactViewController 中,cellForRowAt 这个方法,加入如下代码:
let avatar = cell.viewWithTag(666) as! UIImageView // 通过tag = 666的标签定位到cell上的这个UIImageView
let nickName = cell.viewWithTag(667) as! UILabel // 通过tag = 667的标签定位到cell上的这个UILabel
avatar.image = UIImage(named: "default\(indexPath.row + 1)")
nickName.text = "我是第\(indexPath.row + 1)个row的昵称"
设置指定头像和昵称代码解释:
1. cell.viewWithTag(666)只能定位到这个UIView,对于程序来说他的“类型”(Type)是“Any”,对于Any类型的,不会拥有image方法,或者text方法,从而无法使用,所以需要将其准确的解包为“UIImageView”或“UILabel",才能使用对应的方法
2. 字符串:“我是第\(indexPath.row + 1)” 中的“\(x)"部分,是在字符串中加入变量x拼接到字符串里,这点对于有编程基础的同学不难理解,对于没有编程基础的同学,可以记住用法就好,随着学习的深入,会自动出现自己的理解。
20. Command + R 运行一下看看效果:
同学录结果
网友评论