swift实现表格视图单元格单选(1)-kb88凯时官网登录

来自:网络
时间:2023-07-25
阅读:

本文实例为大家分享了swift实现表格视图单元格单选的具体代码,供大家参考,具体内容如下

效果展示

swift实现表格视图单元格单选(1)

前言

最近一个朋友问我,如何实现表格视图的单选?因为我之前用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")
        }
    }
}

好了,表格视图的单选就这样实现了,运行看看吧。可能在实际开发中会遇到更为复杂的情况,就是多个组的单选,比如你要做一个类似于习题库的应用,将会用到多个组的单选,那应该如何实现呢?可参考:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

返回顶部
顶部
网站地图