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

 更新时间:2022年01月26日 15:39:12   作者:Hierarch_Lee  
这篇文章主要为大家详细介绍了Swift实现表格视图单元格单选,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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")
        }
    }
}

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

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

相关文章

  • 深入理解Swift中的变量与常量

    深入理解Swift中的变量与常量

    本文主要是介绍Swift中最常用的常量和变量,将从“变量常量的定义”、"如何声明变量常量"、“变量和常量的命名”,"变量常量的本质区别"四个方面入手,重点介绍变量和常量的使用以及区别,希望大家在阅读完本文后都可以熟练使用它们。有需要的朋友们下面来一起学习吧。
    2017-01-01
  • 用Swift编写自动录音器

    用Swift编写自动录音器

    这篇文章主要介绍了用Swift编写自动录音器,有需要的朋友可以借鉴下
    2015-07-07
  • Swift 4中一些实用的数组技巧小结

    Swift 4中一些实用的数组技巧小结

    这篇文章主要给大家分享了关于Swift 4中一些实用的数组技巧,文中通过示例代码介绍的介绍的非常详细,对大家学习或者使用swift具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-03-03
  • Swift实现复数计算器

    Swift实现复数计算器

    这篇文章主要为大家详细介绍了Swift实现复数计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Swift中的常量和变量简单概述

    Swift中的常量和变量简单概述

    这篇文章主要介绍了Swift中的常量和变量简单概述的相关资料,非常具有参考借鉴价值,感兴趣的朋友一起学习吧
    2016-05-05
  • Swift利用CoreData实现一个上班签到的小工具

    Swift利用CoreData实现一个上班签到的小工具

    这篇文章主要给大家介绍了关于Swift利用CoreData实现一个上班签到小工具的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-12-12
  • 用SwiftUI实现3D Scroll滚动效果的实现代码

    用SwiftUI实现3D Scroll滚动效果的实现代码

    这篇文章主要介绍了用SwiftUI实现3D Scroll效果的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习
    2020-04-04
  • Swift中的限定扩展详析

    Swift中的限定扩展详析

    扩展就是向一个已有的类、结构体或枚举类型添加新功能。下面这篇文章主要给大家介绍了关于Swift中限定扩展的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2018-03-03
  • swift3.0 创建sqlite数据库步骤方法

    swift3.0 创建sqlite数据库步骤方法

    本篇文章主要介绍了swift3.0 创建sqlite数据库步骤方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Swift Package 技巧及混编兼容问题详解

    Swift Package 技巧及混编兼容问题详解

    这篇文章主要为大家介绍了Swift Package 技巧及混编兼容问题详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03

最新评论