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. Log4j 密码屏蔽

    Log4j filter to mask Payment Card numbers (PCI DSS) According to PCI DSS (Payment Card Industry Data ...

  2. scp命令使用

    从 本地 复制到 远程 scp /home/daisy/full.tar.gz root@172.19.2.75:/home/root (然后会提示你输入另外那台172.19.2.75主机的root用 ...

  3. Couldn't get lock for %t/vertx.log

    今天在启动vertx框架的项目时,报“Couldn't get lock for %t/vertx.log”的错误. 解决方案: 1,找出vertx.log的目录.一般在(C:\Users\Admin ...

  4. Objective-C中的runtime的原理和用法

    一.runtime介绍 runtime翻译就是运行时,我们称为运行时机制.在OC中最重要的体现就是消息发送机制. 1)在C语言中,程序在编译过程中就决定调用哪个函数. 2)在OC中,编译的时候不会决定 ...

  5. Navigation学习笔记

    ***************************** 使用storyboard导航********************************* storyboard方式相对简单. 在弹出来 ...

  6. ASP.NET注意事项

    1.服务器上bin目录下面的dll备份的时候,第一个点号之前的名字不能是一样的,否则会报错. 2.

  7. Quartz1.8.5例子(十)

    /* * Copyright 2005 - 2009 Terracotta, Inc. * * Licensed under the Apache License, Version 2.0 (the ...

  8. MyEclipse过期激活方法

    如果已经过期会提示,进行购买.重新激活和退出,我们选择重新激活. 打开浏览器,地址栏输入key.858game.com,然后输入名称,在线获得MyEclipse的激活码. 输入Sumscripter: ...

  9. 数据库水平拆分和垂直拆分区别(以mysql为例)

    数据库水平拆分和垂直拆分区别(以mysql为例) 数据库水平拆分和垂直拆分区别(以mysql为例)   案例:     简单购物系统暂设涉及如下表: 1.产品表(数据量10w,稳定) 2.订单表(数据 ...

  10. USB做Host的OTG原理

    在介绍USBOTG的基础上,着重介绍Maxim公司的MAX3301E型USBOTG电路的特点.内部结构和工作原理. 1 引言 随着USB2.0版本的发布,USB越来越流行,已经成为一种标准接口.现在, ...