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的使用和注意事项,布布扣,bubuko.com

时间: 2024-10-14 05:32:41

swift中tableview的使用和注意事项的相关文章

Swift中TableView的基本使用

Xcode6新建一个项目,采用swift创建代码 创建一个ViewController继承UITableViewController 涉及了模型,控制器 模型:ZLPlace.swift class ZLPlace: NSObject { var place = "" var visited = false } tableViewController 控制器 import UIKit class ViewController: UITableViewController { // 静态

21.Swift中tableView的使用

// 遵守协议的方式,直接在继承的父类后跟,+协议即可 class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // 添加tableView的控件 let tableView = UITableView() tableView.frame = self.view.bounds self.view.addSubview(tableView) // 设置数据源,设置数据 ta

【Swift】swift中使用kvc赋值的时候,注意事项

swift中使用kvc赋值的时候.假如给基础数据类型赋值,必须先给基础数据类型的变量一个初始值. 否则将会报错. var id : Int = 0 setValue(dict["id"], forKey: "id")

Swift中KVO(监听)的使用方法及注意事项

---恢复内容开始--- 相信研究swift语言的开发者都多多少少了解或者精通Objective—C语言,熟练掌握Objective—C语言的开发者,在学习swift语言的过程中,是比较快速,而又轻松的.本人就是一位熟练掌握OC语言,后开始研究的swift.在学习swift语言的过程中,笔者建议有OC基础的开发者,在写swift的代码过程中,再写一下OC中的代码,二者相互比较,相信你能找到快速学会swift语言的方法.资深,有耐心和有天赋的开发者,相信能在一周左右,能够运用swift开发项目.其

swift中代理的使用

下面以自定义的UITableViewCell的代理为例,记录一下swift中代理的使用 controller中的代码如 1 // 2 // ViewController.swift 3 // simpleDemo 4 // 5 // Created by liubo on 16/7/25. 6 // Copyright © 2016年 liubo. All rights reserved. 7 // 8 9 import UIKit 10 11 class ViewController: UIV

swift中通知的使用方法

其实swift语言和OC语言,在本质上都是一样,其里面的方法之类的也基本相同.通知的使用方法也是一样,只是代码的书写格式发生了改变而已.下面我通过一个简单的小需求,也讲一讲通知,用swift中的闭包,也能完成此功能. 使用通知需要注意事项: 1,先确保接收中心存在,在设置通知中心. 2,最后一定要移除通知中心. 3,通知也是可以传值的,放在userInfo里面. 具体界面效果,我在这里就不截图了,希望各位开发者,自己写一遍,然后运行. ViewController // //  ViewCont

swift中闭包 OC中Block 解决循环引用

OC 中 全局宏定义 #define WS(weakSelf)  __weak __typeof(&*self)weakSelf = self; 用法如下: WS(weakself) [self.tableView addHeaderWithCallback:^{ [weakself requestMemberList]; }]; swift 在比闭包 中使用 weakSelf weak var weakSelf = self demo4 {     // 使用?的好处 就是一旦 self 被释

swift中的传值

光阴似箭,日月如梭,转眼间学习的旅途已经过了一大半了,忘着自己所敲过的成批的代码,看着自己付出和努力,默默地为自己这几个月的奋斗感到欣慰,不论学习的路途再怎么的艰辛,但是自己还是坚持过来了,回想着以往的自己,似乎还从没有这么的坚持过,也没有这么的认真对待过,所以这么艰难的路自己都走过来了,后面的我相信一定是绚丽的明天和辉煌的未来,也许有些人说当个程序员真的好苦,但是我并不这么认为,因为这是我想做的,也是我所向往的,更是我所选择的道路,做“你”所想,实现我们共同的目标!!!! 在这看似漫长而又短暂

swift中editingStyleForRowAtIndexPath的写法

效果图: 首先要实现这句tableView.setEditing(true, animated: true)才能弹出左侧的小圆圈 然而在oc中tableview删除的写法百度一下很常见但是swift中包的很严实: override func tableView(tableView: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle { return U