美文网首页
Swift小白的第七课-仿写联系人列表(1/3)

Swift小白的第七课-仿写联系人列表(1/3)

作者: 薰衣香 | 来源:发表于2019-09-19 23:22 被阅读0次

我们今天的任务:使用TableView来创建联系人的基础列表项目

知识点目录:

1. TableView和TableViewCell的配置使用

2. ViewWithTag来定位View的方法

有了以前的一些课程的基础,我们现在对于简单的页面架构已经能做到支持了,这节课,我们准备仿写联系人列表

1、先创建一个联系人Tab,并且把图标都换好,这部分内容我这里不讲了,还不知道怎么建立Tab和关系的可以参看我上节课的内容,复习一下,新学的同学当作作业来做把.

Contact标签页

2. 找到Main.storyboard. 将TableView(从元件库中找),拖到Contact这个ViewController的,并铺满怎么SafeArea.

将TableView拖入Contact

3. 拖入TableViewCell(从元件库里找)到表格里

拖入TableViewCell

4. 选中TableViewCell,勾选Custom,设置行高为55.

设置TableViewCell行高

5. 将ImageView拖入TableViewCell,并设置尺寸

我们Cell设置的高度为55,我们让头像距离屏幕边缘15像素,距离表格线顶部5像素,那么头像高度和宽度都设置为45像素

设置ImageView

6. 拖入Label准备用来设置用户名,注意将Label 设置得长一点,避免出现长一点的名字无法显示的问题

设置Label

7. 建立Contact的ViewController:File -> New -> File(或者快捷键:command + N)

新建文件

8. 选择Cocoa Touch Class. 点击下一步

创建Cocoa Touch Class

9. Subclass of 选择:UITableViewCell,然后输入这个“类”的名字:ContactTableViewCell、点击下一步,选择文件夹,完成创建

创建ContactTableViewCell

10. 选中Main.storyboard,然后选中tableViewCell. 切换到属性设置页面,将Class指定为刚刚创建的Class文件

将Cell与类关联上

11. 我们重用这个Cell,选中Cell,并且设置identifier为contactTableViewCell.

我们创建的Cell是要用来做联系人的,每一联系人都是一样的Cell(一个ImageView用来做头像,一个Label用来设置用户名),区别只是不同的人头像不同,名字不同,所以这些Cell都是需要重用的,

设置重用identifier

12. Comand + N 新建一个Subclass of 为“ UIViewController“ 的 ViewController,命名为“ContactViewController")

新建ContactViewController

13. 选中Main.storyboard,然后选中Contact这个ViewController. 切换到属性设置页面,将Class指定为刚刚创建的Class文件(ContactViewController)

设置Class文件

14.设置TableView的delegate和dataSource: 从TableView右键拖动到Contact上,然后松手,选中“delegate” 和 “dataSource"

关联dataSource和delegate

15. 选中ContactViewController.swift. 增加继承类协议“UITableViewDelegate"和“UITableViewDataSource",

添加完成这两个协议以后,工具会提示错误,这个错误是要求你设置表格的cell和cell数量的,点击“Fix”即可直接生成对应的方法

设置继承协议类 点击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

设置tag

19. 找到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 运行一下看看效果:

同学录结果

相关文章

网友评论

      本文标题:Swift小白的第七课-仿写联系人列表(1/3)

      本文链接:https://www.haomeiwen.com/subject/bbmqyctx.html