本文实例为大家分享了swift使用表格组件实现单列表的具体代码,供大家参考,具体内容如下
1、样例说明:
(1)列表内容从controls.plist文件中读取,类型为array 。
(2)点击列表项会弹出消息框显示该项信息。
(3)按住列表项向左滑动,会出现删除按钮。点击删除即可删除该项。
2、效果图
3、单元格复用机制
由于普通的表格视图中对的单元格形式一般都是相同的,所以本例采用了单元格复用机制,可以大大提高程序性能。
实现方式是初始化创建 uitableview 实例时使用 registerclass(uitableviewcell.self, forcellreuseidentifier: "swiftcell") 创建一个可供重用的 uitableviewcell。并将其注册到uitableview,id为 swiftcell。
下次碰到形式(或结构)相同的单元就可以直接使用uitableview的dequeuereusablecellwithidentifier 方法从uitableview中取出。
4、示例代码
--- viewcontroller.swift ---
import uikit class viewcontroller : uiviewcontroller , uitableviewdelegate , uitableviewdatasource { var ctrlnames:[ string ]? var tableview: uitableview ? override func loadview() { super .loadview() } override func viewdidload() { super .viewdidload() //初始化数据,这一次数据,我们放在属性列表文件里 self .ctrlnames = nsarray (contentsoffile: nsbundle .mainbundle().pathforresource( "controls" , oftype: "plist" )!) as ? array print ( self .ctrlnames) //创建表视图 self .tableview = uitableview (frame: self .view.frame, style: uitableviewstyle . plain ) self .tableview!.delegate = self self .tableview!.datasource = self //创建一个重用的单元格 self .tableview!.registerclass( uitableviewcell . self , forcellreuseidentifier: "swiftcell" ) self .view.addsubview( self .tableview!) //创建表头标签 let headerlabel = uilabel (frame: cgrectmake (0, 0, self .view.bounds.size.width, 30)) headerlabel.backgroundcolor = uicolor .blackcolor() headerlabel.textcolor = uicolor .whitecolor() headerlabel.numberoflines = 0 headerlabel.linebreakmode = nslinebreakmode . bywordwrapping headerlabel.text = "常见 uikit 控件" headerlabel.font = uifont .italicsystemfontofsize(20) self .tableview!.tableheaderview = headerlabel } //在本例中,只有一个分区 func numberofsectionsintableview(tableview: uitableview ) -> int { return 1; } //返回表格行数(也就是返回控件数) func tableview(tableview: uitableview , numberofrowsinsection section: int ) -> int { return self .ctrlnames!.count } //创建各单元显示内容(创建参数indexpath指定的单元) func tableview(tableview: uitableview , cellforrowatindexpath indexpath: nsindexpath ) -> uitableviewcell { //为了提供表格显示性能,已创建完成的单元需重复使用 let identify: string = "swiftcell" //同一形式的单元格重复使用,在声明时已注册 let cell = tableview.dequeuereusablecellwithidentifier(identify, forindexpath: indexpath) as uitableviewcell cell.accessorytype = uitableviewcellaccessorytype . disclosureindicator cell.textlabel?.text = self .ctrlnames![indexpath.row] return cell } // uitableviewdelegate 方法,处理列表项的选中事件 func tableview(tableview: uitableview , didselectrowatindexpath indexpath: nsindexpath ) { self .tableview!.deselectrowatindexpath(indexpath, animated: true ) let itemstring = self .ctrlnames![indexpath.row] let alertcontroller = uialertcontroller (title: "提示!" , message: "你选中了【\(itemstring)】" , preferredstyle: . alert ) let okaction = uialertaction (title: "确定" , style: . default ,handler: nil ) alertcontroller.addaction(okaction) self .presentviewcontroller(alertcontroller, animated: true , completion: nil ) } //滑动删除必须实现的方法 func tableview(tableview: uitableview , commiteditingstyle editingstyle: uitableviewcelleditingstyle , forrowatindexpath indexpath: nsindexpath ) { print ( "删除\(indexpath.row)" ) let index = indexpath.row self .ctrlnames?.removeatindex(index) self .tableview?.deleterowsatindexpaths([indexpath], withrowanimation: uitableviewrowanimation . top ) } //滑动删除 func tableview(tableview: uitableview , editingstyleforrowatindexpath indexpath: nsindexpath ) -> uitableviewcelleditingstyle { return uitableviewcelleditingstyle . delete } //修改删除按钮的文字 func tableview(tableview: uitableview , titlefordeleteconfirmationbuttonforrowatindexpath indexpath: nsindexpath ) -> string ? { return "删" } override func didreceivememorywarning() { super .didreceivememorywarning() } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。