本文实例为大家分享了swift实现表格视图单元格单选的具体代码,供大家参考,具体内容如下
效果展示
前言
最近一个朋友问我,如何实现表格视图的单选?因为我之前用objective-c写过一次,但那都是很久以前的事情了,于是就想着用swift实现一次,并分享给大家。
实现
下面我们来看看具体的实现方法。
首先我们创建一个swift ios工程,在appdelegate.swift的didfinishlaunchingwithoptions
方法中手动初始化uiwindow,并且给根视图控制器添加导航栏,当然在此之前我们需要到info.plist
文件中将storyboard加载uiwindow字段的main
值删除。
self.window = uiwindow(frame: uiscreen.mainscreen().bounds) self.window?.backgroundcolor = uicolor.blackcolor() self.window?.rootviewcontroller = uinavigationcontroller(rootviewcontroller: viewcontroller()) self.window?.makekeyandvisible()
下一步,我们需要到viewcontroller.swift文件中搭建界面,构造表格视图,以及数据源的配置,这里我直接上代码,相信表格视图的使用大家已经非常熟悉了。代码中注册的单元格使用的是自定义的单元格,而处理单选的方法主要就是在自定义单元格customtableviewcell
中实现,稍后我会提及,涉及到的素材可到阿里矢量图中下载。
import uikit class viewcontroller: uiviewcontroller, uitableviewdatasource, uitableviewdelegate { var tableview: uitableview? var datasource: [string]? override func viewdidload() { super.viewdidload() self.initializedatasource() self.initializeuserinterface() } // mark:initialize methods func initializedatasource() { self.datasource = ["中国", "美国", "法国", "德国"] } func initializeuserinterface() { self.title = "单项选择" self.automaticallyadjustsscrollviewinsets = false self.view.backgroundcolor = uicolor.whitecolor() // initialize table view self.tableview = { let tableview = uitableview(frame: cgrectmake(0, 64, cgrectgetwidth(self.view.bounds), cgrectgetheight(self.view.bounds) - 64), style: uitableviewstyle.grouped) tableview.datasource = self tableview.delegate = self tableview.separatorstyle = uitableviewcellseparatorstyle.singleline tableview.registerclass(customtableviewcell.classforcoder(), forcellreuseidentifier: "cellidentifier") return tableview }() self.view.addsubview(self.tableview!) } // mark:uitableviewdatasource && uitableviewdelegate func numberofsectionsintableview(tableview: uitableview) -> int { return 1 } func tableview(tableview: uitableview, numberofrowsinsection section: int) -> int { return (self.datasource?.count)! } func tableview(tableview: uitableview, cellforrowatindexpath indexpath: nsindexpath) -> uitableviewcell { let cell = tableview.dequeuereusablecellwithidentifier("cellidentifier", forindexpath: indexpath) as! customtableviewcell cell.imageview?.image = uiimage(named: "iconfont-select.png") cell.textlabel?.text = self.datasource![indexpath.row] return cell } func tableview(tableview: uitableview, heightforheaderinsection section: int) -> cgfloat { return 40 } func tableview(tableview: uitableview, titleforheaderinsection section: int) -> string? { return "请选择您向往的城市:" } func tableview(tableview: uitableview, didselectrowatindexpath indexpath: nsindexpath) { // get cell with index path let cell = tableview.cellforrowatindexpath(indexpath) print("您选择的城市:\((cell?.textlabel?.text)!)") } }
接下来我们看看 customtableviewcell.swift 文件,在自定义单元格中,要做的操作非常简单,只需在 setselected
方法中做如下操作即可:
override func setselected(selected: bool, animated: bool) { super.setselected(selected, animated: animated) if selected { imageview?.image = uiimage(named: "iconfont-selected.png") }else { imageview?.image = uiimage(named: "iconfont-select.png") } } }
好了,表格视图的单选就这样实现了,运行看看吧。可能在实际开发中会遇到更为复杂的情况,就是多个组的单选,比如你要做一个类似于习题库的应用,将会用到多个组的单选,那应该如何实现呢?可参考:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。