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编程中的初始化与反初始化完全讲解,是Swift入门学习中的基础知识,需要的朋友可以参考下
    2015-11-11
  • 如何利用SwiftUI实现可缩放的图片预览器

    如何利用SwiftUI实现可缩放的图片预览器

    这篇文章主要给大家介绍了关于如何利用SwiftUI实现可缩放图片预览器的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用SwiftUI具有一定的参考学习价值,需要的朋友可以参考下
    2021-09-09
  • Swift中使用正则表达式的一些方法

    Swift中使用正则表达式的一些方法

    这篇文章主要介绍了Swift中使用正则表达式的一些方法,Swift语言对正则表达式的支持也在不断改进中,需要的朋友可以参考下
    2015-07-07
  • Spring中BeanFactory与FactoryBean的区别解读

    Spring中BeanFactory与FactoryBean的区别解读

    这篇文章主要介绍了Spring中BeanFactory与FactoryBean的区别解读,Java的BeanFactory是Spring框架中的一个接口,它是用来管理和创建对象的工厂接口,在Spring中,我们可以定义多个BeanFactory来管理不同的组件,需要的朋友可以参考下
    2023-12-12
  • Swift如何调用Objective-C的可变参数函数详解

    Swift如何调用Objective-C的可变参数函数详解

    这篇文章主要给大家介绍了关于Swift如何调用Objective-C的可变参数函数的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用swift具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-03-03
  • Swift实现“或”操作符的3种方法示例

    Swift实现“或”操作符的3种方法示例

    这篇文章主要给大家介绍了关于Swift实现“或”操作符的3种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • 在 Swift 中编写Git Hooks脚本的方法

    在 Swift 中编写Git Hooks脚本的方法

    在本例中,我使用了 commit-msg 钩子,它能够在当前提交信息生效前修改此信息,钩子由一个参数调用,该参数是指向包含用户输入的提交消息的文件的路径,这意味着,为了改变提交消息,我们只需要从文件中读取、修改其内容,然后写回调用挂钩的文件
    2022-06-06
  • 在Swift中如何使用正则表达式详解

    在Swift中如何使用正则表达式详解

    正则表达式是对字符串操作的一种逻辑公式,相信大家应该都不陌生,下面这篇文章主要给大家介绍了关于在Swift中如何使用正则表达式的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-09-09
  • Swift编程中实现希尔排序算法的代码实例

    Swift编程中实现希尔排序算法的代码实例

    希尔排序是对插入排序的一种改进版本,算法本身并不稳定,存在优化空间,这里我们来讲一下希尔排序的大体思路及Swift编程中实现希尔排序算法的代码实例
    2016-07-07
  • iOS UITableView展开缩放动画实例代码

    iOS UITableView展开缩放动画实例代码

    这篇文章主要介绍了Swift UITableView展开缩放动画实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-08-08

最新评论