Swift中的注释

使用"// MARK:- 注释内容",对属性或方法进行注释

使用"///注释内容"对属性或方法提供调用说明的注释

使用extension对同一个类中的相关方法进行划分.

extension类似于OC中的category,也是只能扩充方法,不能扩充属性

使用代码添加UITableView

  1. 使用懒加载属性,声明一个tableView
  • lazy var talbeView : UITableView = UITableView()
  • 将tableView添加到控制器的View中
    • view.addSubview(tableView)
  • 设置tableView的frame为控制器的大小
    • tableView.frame = view.bounds
  • 设置数据源,必须要实现两个方法,如果不实现编译器会报错
    • tableView.dataSource = self
  • 设置代理,代理方法均为可选方法,如果不实现也没有问题
    • tableView.delegate = self

注意:可以将以上步骤抽成一个方法setupUI(),并且写到ViewController的extension部分,这样可以增强阅读性.

tableView的数据源方法

tableView的数据源方法中,有两个必须实现的方法,如果不实现,编译器会报错.可以将数据源方法单独写到extension中.

必须实现的两个方法为:

  • numberOfRowsInSection
  • cellForRowAtIndexPath
// MARK:- tableView的数据源方法
// extension类似OC的category,也是只能扩充方法,不能扩充属性
extension ViewController : UITableViewDataSource{
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 20
} func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// 1.创建cell
let CellID = "CellID"
var cell = tableView.dequeueReusableCell(withIdentifier: CellID) if cell == nil {
// 在swift中使用枚举: 1> 枚举类型.具体的类型 2> .具体的类型
cell = UITableViewCell(style: .default, reuseIdentifier: CellID)
} // 2.给cell设置数据
cell?.textLabel?.text = "测试数据:\((indexPath as NSIndexPath).row)" // 3.返回cell
return cell!
}
}

在使用代码创建cell的时候:

  1. 创建CellID,并且使用let声明
  • 使用var cell = table.dequeueResuableCell(withIdentifier: CellID),从缓存池中取cell
  • 判断是否能从缓存池中取cell,即判断cell是否为空
    • 如果为空,则使用UItableViewCell(style: .default, reuseIdentifier: CellID)为cell赋值
    • 在swift中使用枚举,可以有两种方式,一种是"枚举类型.具体的类型",一种是".具体的类型"
  • 设置cell上的数据
  • 返回cell

tableView的代理方法

tableView的代理方法均为可选的,用到的时候再去实现,也可以将代理方法单独写到extension中.

// MARK:- tableView的代理方法
// extension类似OC的category,也是只能扩充方法,不能扩充属性
extension ViewController : UITableViewDelegate{
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("点击了:\((indexPath as NSIndexPath).row)")
}
}

Swift中UITableView的简单使用的更多相关文章

  1. Swift学习--闭包的简单使用(三)

    一.Swift中闭包的简单使用 override func viewDidLoad() { super.viewDidLoad() /** 闭包和OC中的Block非常相似 OC中的block类似于匿 ...

  2. Swift 中异常抛出和四种异常处理

    在Swift中你可以像其他语言一样抛出异常处理异常,今天我们就详细地说说Swift中的异常抛出和处理. 在一开始我们要定义错误或者说是异常,Swift中的一些简单异常可以使用枚举定义,注意这个枚举要继 ...

  3. Swift中简单的单例设计

    import Foundation class Test: NSObject { // 提供单例实例 static let shareInstance = Test() // 私有化构造方法 over ...

  4. Swift 中枚举

    Swift 中枚举高级用法及实践 字数11017 阅读479 评论0 喜欢20 title: "Swift 中枚举高级用法及实践"date: 2015-11-20tags: [AP ...

  5. 阿里巴巴最新开源项目 - [HandyJSON] 在Swift中优雅地处理JSON

    项目名称:HandyJSON 项目地址:https://github.com/alibaba/handyjson 背景 JSON是移动端开发常用的应用层数据交换协议.最常见的场景便是,客户端向服务端发 ...

  6. 窥探Swift之使用Web浏览器编译Swift代码以及Swift中的泛型

    有的小伙伴会问:博主,没有Mac怎么学Swift语言呢,我想学Swift,但前提得买个Mac.非也,非也.如果你想了解或者初步学习Swift语言的话,你可以登录这个网站:http://swiftstu ...

  7. 【iOS】在Swift中使用JSONModel

    前言 首先所有的Model还是使用oc来写——看到这一句是不是想关网页了- - #,在swift里面直接写一直报错所以就将就用oc来写了,这里主要是分享一下搭配Alamofire使用的经验. 声明 欢 ...

  8. Swift中的一些关键字

    以下关键字关于引用传参.属性.修改成员变量.静态变量.索引和构造函数重载 读过The Swift Programming Language的人都能看得出,我上面的这几个说法全不是apple的习惯用语. ...

  9. swift中的结构体和枚举

    Swift 里的结构体非常特殊. 类是面向对象编程语言中传统的结构单元.和结构体相比,Swift 的类支持实现继承,(受限的)反射,析构函数和多所有者. 既然类比结构体强大这么多,为什么还要使用结构体 ...

随机推荐

  1. TDirectory.GetLogicalDrives获取本地逻辑驱动器

    使用函数: System.IOUtils.TDirectory.GetLogicalDrives class function GetLogicalDrives: TStringDynArray; s ...

  2. C++ 11 笔记 (二) : for循环

    首先肯定的是,我不是标题党.. C++11的for循环确实有跟C++98不一样的地方,还是先上代码: , , , , }; for (int x : test_arr) { std::cout < ...

  3. php的ftp类

    1.需求 了解php的ftp使用 2.例子 使用CI封装好的ftp类库 上传 $this->load->library('ftp'); $config['hostname'] = 'ftp ...

  4. Uva 10294 Arif in Dhaka (First Love Part 2)

    Description 现有一颗含\(N\)个珠子的项链,每个珠子有\(t\)种不同的染色.现求在旋转置换下有多少种本质不同的项链,在旋转和翻转置换下有多少种本质不同的项链.\(N < 51,t ...

  5. settimeout vs setinternal

    http://blog.sina.com.cn/s/blog_6b1ab3be0100pzmo.html http://www.360doc.com/content/11/0412/17/100779 ...

  6. 制作qtopia-2.2.0和qt4文件系统

    转自 rootfs_qtopia_qt4.img 1. 解压rootfs_qtopia_qt4-20100816.tar.gz,得到目录rootfs_qtopia_qt4,里面内容比较大,超过了64M ...

  7. 安装ECMall后报PHP Strict Standards错误,请问如何解决

    Strict Standards: Non-static method ECMall::startup() should not be called statically in /htdocs/ecm ...

  8. PNG在IE6下背景问题

    png24.min.js 源代码: var DD_belatedPNG={ns:"DD_belatedPNG",imgSize:{},delay:10,nodesFixed:0,c ...

  9. DHTMLX 前端框架 建立你的一个应用程序教程(一)

    介绍 从这里下载官网 示例 此教程包含是多方面的: 1.如何在页面上添加标准的dhtmlx组建 2.如何在页面上组织组件 3.如何添加过滤 4.如何从服务器端获取数据填充组建 5.如何保存用户修改的数 ...

  10. Learning WCF Chapter2 WCF Contracts and Serialization

    So far I’ve talked about the standards behind it all,but in fact WCF hides most of this from the dev ...