1.Swift基础控件:TableView列表

Swift TalbeView列表的使用

一、简介

在 iOS 开发中,UITableView 是一个常用的界面组件,用于显示列表型数据。UITableView 可以展示大量数据,并支持滚动、分组、选择等功能,是开发 iOS 应用中常见的组件之一。

以下是 UITableView 的一些重要特点和功能:

  1. 分组显示:UITableView 可以按照分组的方式显示数据,每个分组可以有一个 header 和一个 footer。

  2. 可定制的单元格:UITableView 中的每个单元格可以自定义样式,包括文本、图像、按钮等。

  3. 滚动和重用机制:UITableView 支持滚动功能,并且具有重用机制,可以重复使用单元格,提高性能。

  4. 数据源和委托:UITableView 需要通过数据源(UITableViewDataSource)和委托(UITableViewDelegate)来提供数据和处理用户操作。

  5. 编辑模式:UITableView 支持编辑模式,可以添加、删除、移动单元格等操作。

  6. 搜索功能:UITableView 支持搜索功能,可以根据关键字搜索数据。

在使用 UITableView 时,通常需要实现以下几个方法:

  • numberOfSections(in:):返回表格中的分组数量。
  • tableView(_:numberOfRowsInSection:):返回每个分组中的行数。
  • tableView(_:cellForRowAt:):返回指定单元格的内容。
  • tableView(_:didSelectRowAt:):处理用户点击单元格的操作。

除了以上方法外,还可以实现其他委托方法来自定义 UITableView 的外观和行为,比如设置 section header 和 footer、自定义单元格高度、处理单元格编辑等。

总的来说,UITableView 是 iOS 开发中非常常用的界面组件,可以用于展示各种类型的列表数据,提供了丰富的功能和定制选项,使得开发者能够轻松构建复杂的界面。

二、完整代码

import UIKitclass BaseTableViewController: ViewController,UITableViewDelegate, UITableViewDataSource {var tableView: UITableView!var arrTitle: NSArray!var arrList: NSMutableArray!override func viewDidLoad() {super.viewDidLoad()initData()tableView = UITableView(frame: self.view.bounds, style: UITableView.Style.grouped)tableView.delegate = selftableView.dataSource = self
//        tableView.tableHeaderView = tableViewHeader()
//        tableView.tableFooterView = tableViewFooter()self.view.addSubview(tableView)}/*初始化列表数据,在子类需要重写此方法*/func initData() {arrList = NSMutableArray.init()arrList = ["Item1", "Item 2", "Item 3"]}// MARK: - 列表tableView-headerfunc tableViewHeader() -> UIView{let label:UILabel = UILabel.init(frame: CGRect(x: 0, y: 0, width: SCREEN_WIDTH, height: 80))label.text = "我是TableView的头部"label.textColor = UIColor.whitelabel.font = UIFont.systemFont(ofSize: 16)label.backgroundColor = UIColor.redlabel.textAlignment = NSTextAlignment.centerreturn label}// MARK: - 列表tableView-footerfunc tableViewFooter() -> UIView{let label:UILabel = UILabel.init(frame: CGRect(x: 0, y: 0, width: SCREEN_WIDTH, height: 80))label.text = "我是TableView的尾部"label.textColor = UIColor.whitelabel.font = UIFont.systemFont(ofSize: 16)label.backgroundColor = UIColor.redlabel.textAlignment = NSTextAlignment.centerreturn label}func numberOfSectionsInTableView(tableView: UITableView) -> Int {return 1}func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {return arrList.count}func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {let identifier = "CELL"let cell = UITableViewCell(style: UITableViewCell.CellStyle.subtitle, reuseIdentifier: identifier)cell.textLabel?.text = arrList[indexPath.row] as? Stringreturn cell}func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {NSLog("我被点击了%ld",indexPath.row)}// MARK: - 列表section-header//    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
//        return 40
//    }
//
//    func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
//        let headerView = UIView()
//        headerView.backgroundColor = UIColor.lightGray
//
//        let headerLabel = UILabel(frame: CGRect(x: 15, y: 5, width: tableView.frame.width - 30, height: 30))
//        headerLabel.text = "Section \(section + 1) Header"
//        headerView.addSubview(headerLabel)
//
//        return headerView
//    }// MARK: - 列表section-footer//    func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
//        return 40
//    }
//
//    func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
//        let footerView = UIView()
//        footerView.backgroundColor = UIColor.lightGray
//
//        let footerLabel = UILabel(frame: CGRect(x: 15, y: 5, width: tableView.frame.width - 30, height: 30))
//        footerLabel.text = "Section \(section + 1) Footer"
//        footerView.addSubview(footerLabel)
//
//        return footerView
//    }}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/800072.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode热题100】198. 打家劫舍(动态规划)

一.题目要求 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房…

AI智慧医疗:探索机器学习在医疗保健中的应用与进展

🧑 作者简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导…

Physics-Informed Neural Networks (PINN)

传统的数值模拟方法通常基于有限元、有限差分或有限体积等技术,它们需要构建网格并对物理方程进行离散化处理。然而,这些方法在处理复杂的几何形状、边界条件变化或多物理场耦合等问题时可能面临挑战。此外,它们通常需要大量的计算资源和时间…

web3.0入门及学习路径

Web3是指下一代互联网的演进形式,它涉及一系列技术和理念,旨在实现去中心化、开放、透明和用户主导的互联网体验。Web3的目标是赋予用户更多的控制权和数据所有权,并通过区块链、加密货币和分布式技术来实现。 一、特点 去中心化&#xff1…

vue使用elementui组件的的对话框;使用ref

1.第一步&#xff0c;先在父组件中引用&#xff0c;设置ref的值 <el-dialog :visible.sync"dialogEditVisible"append-to-body width"1000px" title"编辑":close-on-click-modal"false"><dialog-edit v-if"dialogEditV…

【漏洞预警】Linux kernel权限提升漏洞(CVE-2024-1086)

一、漏洞概述 漏洞名称 Linux kernel权限提升漏洞 CVE ID CVE-2024-1086 漏洞类型 Use-After-Free 发现时间 2024-03-28 漏洞评分 7.8 漏洞等级 高危 攻击向量 本地 所需权限 低 利用难度 低 用户交互 无 PoC/EXP 已公开 在野利用 未知 Netfilte…

静态数码管

文章目录 前言一、静态数码管原理二、静态数码管显示1.单个数码管 奇数偶数2.显示任意四位数 0000-9999 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 课程需要&#xff1a; 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考…

HarmonyOs开发之———容器组件使用

谢谢关注!! 前言:上一篇文章主要介绍HarmonyOS 开发之———基础组件的使用。如需了解谢谢查阅:http://t.csdnimg.cn/frBpp 一、在HarmonyOS中,不同的容器组件拥有各自的属性,用于控制布局和组件的展示方式。以下是Stack(堆栈)、Column(列)、Row(行)、Flex(弹性…

DFMEA的输入与输出——SunFMEA软件

DFMEA泛应用于产品设计阶段&#xff0c;以识别潜在的失效模式&#xff0c;评估其对系统的影响&#xff0c;并制定相应的预防措施。DFMEA的输入与输出是这一过程中至关重要的两个环节&#xff0c;它们直接决定了分析的质量与效果。今天SunFMEA软件系统和大家一起分享DFMEA的输入…

飞书API(3):Python 自动读取多维表所有分页数据的三种方法

上一小节介绍了怎么使用 Python 读取多维表的数据&#xff0c;看似可以成功获取到了所有的数据&#xff0c;但是在实际生产使用过程中&#xff0c;我们会发现&#xff0c;上一小节的代码并不能获取到所有的多维表数据&#xff0c;它只能获取一页&#xff0c;默认是第一页。因为…

C++事件聚合器

事件聚合器&#xff08;Event Aggregator&#xff09;允许不同的组件订阅和发布事件&#xff0c;而不需要知道事件的发布者和订阅者是谁&#xff0c;模块可在不直接相互引用的情况下通信&#xff0c;实现模块间的松耦合。事件聚合器常用于C#语言中&#xff0c;以下为C语言的简单…

棋牌室计时吧台计费收费灯控管理系统软件操作流程

棋牌室计时吧台计费收费灯控管理系统软件操作流程 一、前言 以下软件操作教程以&#xff0c;佳易王棋牌桌球计时计费管理系统软件灯控版V17.87为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 该计时计费软件可以是棋牌和桌球混合同时计时计费 …

JS--demo实现随机点名

逻辑就是通过点击事件得到数组里面的随机一个值&#xff0c;再把这个值给删除&#xff0c;当数组长度为1的时候&#xff0c;停止点名&#xff0c;用disabled属性让用户不能进行点击。 <!DOCTYPE html> <html lang"en"><head><meta charset&quo…

双数列-力扣-打家劫舍2

一个专业的小偷&#xff0c;计划偷窃一个环形街道上沿街的房屋&#xff0c;每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 &#xff0c;这意味着第一个房屋和最后一个房屋是紧挨着的。同时&#xff0c;相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的…

ESB总线集成方案:优劣势的深度解析

在信息化时代&#xff0c;企业面临着业务快速扩展、系统日益复杂、数据交互需求不断增加的挑战。为了有效整合各种资源&#xff0c;优化业务流程&#xff0c;提高运营效率&#xff0c;企业服务总线&#xff08;ESB&#xff09;集成方案应运而生。本文将详细探讨ESB总线集成方案…

day13 模块与包

一.模块 ```python 什么是模块? 模块:就是一个python文件 当python文件作为一个模块的时候,文件名就是模块名,demo1.py (demo1就是模块名) 作用: 可以调用其他python文件的代码,功能,可以更灵活的实现和使用了,添加很多各种效果 变量 = 存储一个/多个数据 函数 = 存储一句…

Android匿名共享内存(Ashmem)

在Android中我们熟知的IPC方式有Socket、文件、ContentProvider、Binder、共享内存。其中共享内存的效率最高&#xff0c;可以做到0拷贝&#xff0c;在跨进程进行大数据传输&#xff0c;日志收集等场景下非常有用。共享内存是Linux自带的一种IPC机制&#xff0c;Android直接使用…

基于单片机体温心率检测仪系统设计

**单片机设计介绍&#xff0c; 基于单片机体温心率检测仪系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机体温心率检测仪系统设计是一个综合性的项目&#xff0c;旨在通过单片机及其外围电路实现对人体体温和心…

山寨windows

我的目标是能够运行windows 下的大部分PE格式的程序&#xff0c;这一点通过实验已经证明完全是可行的。 PE格式主要有exe dll sys等文件&#xff0c;这三个文件可以用相同的函数解析&#xff0c; 主要有以下段组成&#xff0c; 1、文件头&#xff0c;包含DOS文件头、PE文件头…

Android 11 上的文件读写无权限问题

Android 6以上需要动态申请读写权限&#xff0c;但是11以上动态申请了读写权限也是无效。并且手动给予权限没有该按钮。 如上图华为钱包有个所有文件权限、但是百度地图只有仅媒体权限&#xff0c;仅媒体权限&#xff08;动态申请读写权限&#xff09;给予后软件还是没法访问文…