swift中tableview的使用和注意事项
今天使用swift写了个简单的tableView,语法和用法上跟oc没多大的区别。但是还是有一些细节的地方需要注意一下的。
先上代码
import UIKit
class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {
var _tableView:UITableView?
override func viewDidLoad() {
super.viewDidLoad()
_tableView=UITableView(frame: self.view.bounds, style:.Plain)
self.view.addSubview(_tableView)
_tableView!.delegate=self
_tableView!.dataSource=self
}
func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int
{
return 20;
}
func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
var cell=tableView.dequeueReusableCellWithIdentifier("CellId") as? UITableViewCell
if (cell==nil){
cell=UITableViewCell(style: .Default, reuseIdentifier: "CellId")
}
cell!.textLabel.text="\(indexPath.row)"
return cell
}
}
注意以下几点:
1,数据源方法,
func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!
func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int
这两个方法是必须实现的,如果你不实现这两个方法,编译器就会报错。而不再是跟OC的时候一样,运行的时候才会报错
所以,当你写完_tableView!.dataSource=self的时候,会出现报错,然后你在头部加班UITableViewDataSource,依然报错。当你实现了上面两个方法后,错误就会消失
2,cell的重用
var cell=tableView.dequeueReusableCellWithIdentifier("CellId") as? UITableViewCell
这里需要注意的一点是,后面强转成UITableViewCell的时候,在as后面带上个问号,因为在缓存池里不一定能找到可以重用的cell,不带问号就会引起cell为nil的错误
初学经验,如有不妥,望大神指点
swift中tableview的使用和注意事项的更多相关文章
- Swift基础--Swift中的分类以及在分类中扩展init方法的注意事项
Swift中的分类 1.创建一个空的swift文件 2.关键字extension,格式: extension 要扩展的类名 {} extension UIButton { } Swift中扩展init ...
- swift学习 - tableView自适应高度2(SnapKit Layout)
SnapKit是Swift中自动布局的框架,相当于Objective-C中的Masonry 下面是tableView自定义cell,使用SnapKit布局的效果图: 详细代码如下: TYCustomC ...
- 【Swift】swift中使用kvc赋值的时候,注意事项
swift中使用kvc赋值的时候.假如给基础数据类型赋值,必须先给基础数据类型的变量一个初始值. 否则将会报错. var setValue(dict["id"], forKey: ...
- swift中editingStyleForRowAtIndexPath的写法
效果图: 首先要实现这句tableView.setEditing(true, animated: true)才能弹出左侧的小圆圈 然而在oc中tableview删除的写法百度一下很常见但是swift中 ...
- Swift中UITableView的简单使用
Swift中的注释 使用"// MARK:- 注释内容",对属性或方法进行注释 使用"///注释内容"对属性或方法提供调用说明的注释 使用extension对同 ...
- swift中的传值
光阴似箭,日月如梭,转眼间学习的旅途已经过了一大半了,忘着自己所敲过的成批的代码,看着自己付出和努力,默默地为自己这几个月的奋斗感到欣慰,不论学习的路途再怎么的艰辛,但是自己还是坚持过来了,回想着以往 ...
- 在Swift中,如何像Objective-C定义可选接口?
Objective-C中的protocol里存在@optional关键字,被这个关键字修饰的方法并非必须要被实现.我们可以通过接口定义一系列方法,然后由实现接口的类选择性地实现其中几个方法.在Coco ...
- swift中利用系统线程实现异步加载数据同步更新UI
swift中的使用案例样式 // Mark: -数据源更新 typealias AddDataBlock = () ->Void var updataBlock:AddDataBlock? fu ...
- swift 中关于open ,public ,fileprivate,private ,internal,修饰的说明
关于 swift 中的open ,public ,fileprivate,private, internal的区别 以下按照修饰关键字的访问约束范围 从约束的限定范围大到小的排序进行说明 open,p ...
随机推荐
- SpringMVC之请求参数的获取方式
转载出处:https://www.toutiao.com/i6510822190219264516/ SpringMVC之请求参数的获取方式 常见的一个web服务,如何获取请求参数? 一般最常见的请求 ...
- text recognizer (OCR) Engine 光学字符识别
https://github.com/tesseract-ocr/tesseract/wiki https://github.com/UB-Mannheim/tesseract/wiki C:\Use ...
- YTU 2629: E1 一种颜色,三个分量
2629: E1 一种颜色,三个分量 时间限制: 1 Sec 内存限制: 128 MB 提交: 300 解决: 226 题目描述 在计算机中,常用三种基色红(R).绿(G).蓝(B)的混合来表示颜 ...
- iphone分辨率大全
分辨率越高,屏幕质量也就越高越清晰,iphone的近几代产品处了从3GS到4代时有一个突破性的变化(当然那个时候3GS像素确实太低了),其他的几代产品在这项指标上并未有太大的变化. iphone分辨率 ...
- 就是这个foxmail有时出现记事同步不了
昨天和妈妈商量还是要打算再次买一块正版电池,虽然她现在有点不情愿,但是过一个月再说,然后就是他的号码超出流量6M,由于是2G的流量,按照每M是一元,所以就是扣了6元,然后他的套餐里面显示还有94M也不 ...
- ORACLE获取某个时间段之间的月份列表和日期列表
ORACLE获取某个时间段之间的月份列表获取某个时间段之间的月份列表(示例返回2009-03到2010-03之间的月份列表) SELECT TO_CHAR(ADD_MONTHS(TO_DATE('20 ...
- C#面向过程之类型转换、算术运算符、关系运算符、逻辑运算符、if-else语句、switch-case、循环结构(while、for)、三元表达式
数据类型转换: int.parse()只能转换string类型的 当参数为null时会报异常int i =Convert.ToInt32(false) 运行结果是0int i =Convert.ToI ...
- AtCoder Regular Contest 099 C~E
C - Minimization 枚举就可以了 因为最后一定会变成1,所以第一次操作的区间就包含1会比较优,然后枚举1在第一次操作区间里排第几个取min即可 #include<iostream& ...
- P1266 速度限制(分层图spfa)
P1266 速度限制 题目描述 在这个繁忙的社会中,我们往往不再去选择最短的道路,而是选择最快的路线.开车时每条道路的限速成为最关键的问题.不幸的是,有一些限速的标志丢失了,因此你无法得知应该开多快. ...
- P3822 [NOI2017]整数
传送门 shadowice大佬已经写的非常详细了我就不再写一遍了-- //minamoto #include<bits/stdc++.h> #define u unsigned int # ...