IOS学习笔记8—UITableViewController

2023-05-16

UITableViewController是IOS开发中一个比较重要的试图控制器,是集成了UITableView视图的控制器,在实际开发中经常用到,功能非常强大,可定制性也很高,下面从简单的使用和自定义Cell以及事件响应等方面来使用。


1.首先创建一个Single View Project,命名为UITableViewControllerTest。打开ViewController.xib并拖入一个UITableView,选中该视图,并点击Connections inspector,分别将delegate和dataSource连线到File's owner


2.在AppDelegate.h中添加属性

@property (strongnonatomicIBOutlet UITabBarController * rootViewController;

并在.m文件中添加合成器

@synthesize rootViewController;


然后在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法中添加该TableView为subView


3.在ViewController.h文件中添加协议UITableViewDelegate,UITableViewDataSource,然后在.m文件中实现协议中的方法

#pragma mark -

#pragma mark Table View Data Source Methods

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

    return [self.listDatas count];

}


上面的方法是返回Table中的行数


-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

    static NSString * SimpleTableViewIdentifier =@"SimpleTableViewIdentifier";

    UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:SimpleTableViewIdentifier];

    if (cell == nil) {

        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:SimpleTableViewIdentifier];

    }

    UIImage * img = [UIImage imageNamed:@"singleicon"];

    cell.imageView.image = img;

    NSUInteger row = [indexPath row];

    cell.textLabel.text = [listDatas objectAtIndex:row];

    

    return cell;

}


上面的方法是构造每一个cell,也就是每一行,SimpleTableViewIdentifier是标记,dequeueReusableCellWithIdentifier方法是当有可重用的cell时,根据标记直接取,而不用重新生成,可以提高效率。

NSIndexPath封装了有关行和分区的信息


UIImage * img = [UIImage imageNamed:@"singleicon"];

cell.imageView.image = img;

NSUInteger row = [indexPath row];

cell.textLabel.text = [listDatas objectAtIndex:row];

这段代码分别设置了行的图片和文字,另外,通过accessoryType属性可以设置行的附属属性,有几种样式可以提供选择。也可以自定义附属视图:cell.accessoryView = [[myView alloc] init];


4.在viewDidLoad方法中添加NSArray后,填入数据,然后run,可以看打运行结果


在这里我使用了TabBarController来承载三种类型的tableview,分别是Plain、Group以及Custom自定义的


5.下面看第二种样式,分组的形式

使用分组的话还要添加一个方法,返回一共有多少组

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView


另外可以设置分组标题

//返回组的名称

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

{

    if ([keys count] == 0) {

        returnnil;

    }

    NSString * key = [keys objectAtIndex:section];

    return key;

}



//设置行的高度

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

{

    return60;

}


#pragma mark Table Delegate Methods

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

    NSUInteger row = [indexPath row];

    NSString * message = [[NSString alloc]initWithFormat:@"You selected is %@!",[listDatas objectAtIndex:row]];

    UIAlertView * alert = [[UIAlertView alloc]initWithTitle:@"Information" message:message delegate:nilcancelButtonTitle:@"Confirm" otherButtonTitles:nil,nil];

    [alert show];

}

上面这个方法是单击行的方法,点击一行后弹出一个对话框UIAlertView



6.最后是自定义cell


首先拖一个UITableViewCell到.xib文件中,并拖入一些视图

然后在.h文件中声明属性

@property(nonatomic,retain)IBOutlet UITableViewCell * tableCell;

@property(nonatomic,retain)IBOutlet UILabel * name;

@property(nonatomic,retain)IBOutlet UILabel * color;

@property(nonatomic,retain)IBOutlet UIImageView * imageView;


7.在.m文件中添加合成器并实现如下方法:

#pragma mark Table Data Source Methods

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

    return [computers count];

}


/*

 自定义表格单元格

 */

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

    static NSString * CustomTableViewIdentifier =@"CustomTableViewIdentifier";

    UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:CustomTableViewIdentifier];

    if (cell == nil) {

        //加载自定义表格单元格nib文件

        NSArray *nib = [[NSBundle mainBundle]loadNibNamed:@"CustomCell" owner:self options:nil];

        if ([nib count] > 0) {

            //tableCell已与自定义cell相关联

            cell = self.tableCell;

        }

    }

    

    NSUInteger row = [indexPath row];

    NSDictionary * rowData = [computers objectAtIndex:row];

    self.name.text = [rowData objectForKey:@"Name"];

    self.color.text = [rowData objectForKey:@"Color"];

    UIImage * img = [UIImage imageNamed:@"doubleicon"];

    imageView.image = img;

    //cell.imageView.image = img;

    return cell;

}


8.最后编译运行,结果如下图:


以上就是简单的UITableViewController的使用,过程可能讲的不是很清楚,有问题可以一起交流,希望和同为IOS开发路上的人一同学习一同进步。

加入我们的QQ群或微信公众账号请查看: Ryan's zone公众账号及QQ群


欢迎关注我的新浪微博和我交流:@唐韧_Ryan

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IOS学习笔记8—UITableViewController 的相关文章

  • Hyper-v安装及使用详细教程

    安装 前面先用了VMware xff0c 以为比较方便安装时不用自己配置 xff0c 结果还是要自己配置 那今天来试下win10自带的Hyper v 首先打开设置 应用 程序和功能 启用或关闭 Windows 功能 找到 Hyper v 勾
  • windows11 安装安卓子系统,玩转安卓APP

    开启Hyper v 将Hyper v勾上 xff0c 确定 xff0c 重启电脑 安装windows subsystem for Android 百度盘链接 提取码 xff1a gby8 下载完成之后直接打开安装会提示安装失败 因此需要使用
  • Ubuntu使用

    买了个Redmibook 15 Pro 锐龙版 xff0c 比较方便携带 xff0c 打开尝试了一下就把系统重装了 xff0c 据说linux系统更适合开发 xff0c 因此装了ubuntu20 10 安装 之前有写过在虚拟机安装 xff0
  • go语言使用jwt认证

    这几天在学习nodejs xff0c 进一步了解npm xff0c 学习过程中解开了以前的一个疑惑 xff0c 以前不知道token可以携带信息 xff0c 只以为是用来做对比的 xff0c 学到了jwt身份认证 xff0c 知道了如何使用
  • 注册Office教育版账号流程实现oneDrive1TB储存

    正常的个人微软账号使用oneDrive只有5GB的储存空间 xff0c 可以通过注册office教育版账号获取oneDrive有1TB储存空间的账号 临时教育邮箱 如果使用普通邮箱注册只能注册个人免费账号 xff0c 如下图 xff0c 也
  • windows 安装 gcc 编译 fyne 项目

    fyne官网 一 说明 可以看到官网写的 xff0c 如果是第一次使用 xff0c 需要安装 go 语言 xff0c 安装 gcc xff0c 获取 fyne 依赖 xff0c 其中麻烦点的就是 gcc xff0c 如果不安装 gcc xf
  • 解决 Go 语言使用 cmd 命令,在控制台输出的中文内容为乱码

    场景 xff1a 在使用 fyne 做一个小桌面程序的时候 xff0c 用到了 cmd 命令 xff0c 如果遇到了错误就进行判断或使用 label 输出错误 xff0c 结果输出的中文是乱码的 因为终端使用的是 gbk 编码 xff0c
  • Windows 安装 Docker Desktop 到其他盘、迁移虚拟硬盘映像文件、压缩虚拟硬盘映像占用空间

    一 建立软连接 首先先建立软连接 xff0c 将 Docker 默认安装的目录链接到其他盘 xff0c 这个最好使用 windows 自带的终端 xff0c 使用 powershell 有可能会识别不到 mklink 命令 mklink j
  • python中pip安装的包都在哪里?

    1 windows的话 xff0c 在cmd中使用 pip list 查看已安装的包名2 windows的话 xff0c 在cmd中然后用 pip show 包名 xff0c 就可以看到安装到哪了 3 练习 xff1a 将pymysql通过
  • Rust 基础(一)

    Rust 1 65 发布于2022 11 03 一 安装 配置环境变量 RUSTUP HOME Rustup元数据和工具链将被安装到Rustup主目录中 默认 xff1a USERPROFILE rustup CARGO HOME Carg
  • 定制适用于ARM平台的Ubuntu rootfs(根文件系统)

    0 背景 有一个很厉害的师兄针对我们实验室的需求设计了一块控制板 xff0c 以beaglebone为基础 xff0c 由于更改了一些底层的硬件 xff0c 所以重新定制编译的内核 xff0c 并预先烧写到了板子的flash中 现在需要安装
  • Win10使用附件中的远程桌面连接Ubuntu 16.04图形界面(xrdp方法)

    Ubuntu16 04下 以下命令行皆是在终端中运行 xff1a 安装xrdp sudo apt get install xrdp 安装vnc4server sudo apt get install vnc4server 安装xubuntu
  • CMake构建OpenCV项目

    文章目录 前言一 基本概念二 操作步骤1 创建OpenCV程序2 创建CMake文件3 编译项目4 运行项目 总结 前言 CMake是个一个开源的跨平台自动化建构系统 xff0c 用来管理软件建置的程序 xff0c 并不依赖于某特定编译器
  • 5GC基础:架构和网元

    1 主要内容 5GC xff08 SA xff09 架构介绍 5GC主要网元及功能对比 5GC网络架构的主要变化 SBA架构网元的注册 发现与选择CUPS边缘计算MM和SM的分离计算与存储的解耦与非3GPP的互操作能力开放PCC架构的变化
  • visual studio进入时许可证已过期解决方案

    新手小白 xff0c 记录一下 问题 xff1a 解决步骤 xff1a 1 打开visual studio installer gt 点击更多 gt 点击修复 2 等待更新安装 xff08 耗时略微有些长 xff09 3 点击启动 xff0
  • Qt 在windows 和linux 下的编译教程

    Qt 源码下载地址 xff1a https download qt io archive qt 打开上面的网址 xff0c 进入 submodules 目录下载 qtbase everywhere src 6 4 2 zip xff0c 这
  • 【位运算总结】 之 左移运算

    左移运算的概念 xff1a 左移运算符 应用 xff1a 1 优化代码 因为左移运算比乘法快 xff0c 因此x 61 x 2可优化为x 61 x lt lt 1 2 计算一个数的二进制的某位 如题 xff1a 给定一个含不同整数的集合 x
  • 关于Qt的QMainWindow、QTableWidget、QComboBox、QScrollArea的widget导致的qss无效问题

    问题 前阵子比较忙 xff0c 忘记记录这个问题了 事情是我在写QTableWidget的qss时候 xff0c 要把下图红色箭头指向的这个边角样式改变时发现的 我发现我对QTabelCornerButton写样式无效 但是我印象里 xff
  • Ubuntu 系统 dpkg 命令使用详解

    dpkg 即 package manager for Debian xff0c 是 Debian 和基于 Debian 的系统中一个主要的包管理工具 xff0c 可以用来安装 构建 卸载 管理 deb 格式的软件包 安装软件 使用 span
  • [python]输出“hello 姓名”

    print 34 hello tianxinyao 34

随机推荐

  • Java实现敏感词过滤 - IKAnalyzer中文分词工具

    IKAnalyzer 是一个开源的 xff0c 基于java语言开发的轻量级的中文分词工具包 官网 xff1a https code google com archive p ik analyzer 本用例借助 IKAnalyzer 进行分
  • 虚拟机可以连接,但是不能上网

    解决方法链接 虚拟可以连接但不能上网 xff0c 一般是DNS的问题 解决方法 xff1a xff08 1 xff09 进入网络共享中 xff0c xff08 2 xff09 进入本地连接 属性 xff08 3 xff09 进入TCP IP
  • QThread必须要了解的几个函数

    概述 如果想对Qt中的QThread有个更加深刻的了解 xff0c 必须要知道这几个重要的函数 xff0c 现在就一一介绍下 函数介绍 属性返回值函数体功能staticQThread QThread currentThread 返回当前线程
  • codeforces 766C Mahmoud and a Message

    题意 xff1a 给你一个长度为n的仅包括小写字母的字符串 xff0c 每个小写字母能在一个长度不超过a i xff08 i是小写字母序号如a为0 xff09 的子串中 问 xff1a 1 有多少种分隔方法 2 所有分割方法中最长的子串有多
  • 结构体对齐详解

    1 结构体基础知识 a 认识结构体 结构体是一些值的集合 这些值称为成员变量 结构体的每个成员可以是不同类型的变量 声明一个结构体类型 声明一个学生类型 Stu就是你对这个结构体的称呼 struct Stu char name 20 cha
  • gitlab搬迁到其它服务器

    由于一些因素 xff0c 需要把gitlab从A服务器搬迁到B服务器 xff0c 现记录步骤如下 xff1a 1 查看A服务器的gitlab版本号 xff1a cat opt gitlab embedded service gitlab r
  • 深度学习在图像超分辨率重建中的应用

    同步更新于知乎 xff1a https zhuanlan zhihu com p 25532538 超分辨率技术 xff08 Super Resolution xff09 是指从观测到的低分辨率图像重建出相应的高分辨率图像 xff0c 在监
  • Xorg 的认识

    1 什么是X Window服务器 xff1f 一种图形用户界面只不过是运行在系统上的一个应用程序 它不是 Linux内核的一部分 xff0c 也没有 集成在你的系统里 它是一个可以为你的工作站提供图形化工作界面的强大工具 由于标准的重要性
  • 利用Python获取带合并单元格的表格数据

    由于在日常运维中经常出现一些合并单元格的表格 xff0c 如果要获取数据比较麻烦 xff0c 现将将封装成类 xff0c 并通过调用list excel data 获取列表形式的数据 dict excel data xff1a 获取字典格式
  • 输出不重复的数组元素

    include lt stdio h gt include lt stdlib h gt include lt math h gt int main int n int f 61 1 scanf 34 d 34 amp n int a n
  • UDP编程之windows socket 缓冲区默认大小

    笔者遇到下位机发过来的几百k的文件 xff0c 为了调试方便 xff0c 一开始并没有加协议 后面发现在OnRecv的回调中打印消息时 xff0c 居然UDP丢包了 后面经过多次分析 xff0c 才发现windows默认的socket缓冲区
  • Wmmem占用内存、CPU过多

    Wmmem占用内存 CPU过多 1 问题描述2 解释 2 1 Vmmem是啥2 2 解决办法 1 问题描述 Windows10中 xff0c 没跑啥软件 xff0c 就看见内存满了 Vmmem占用最多 2 解释 2 1 Vmmem是啥 wi
  • Java基础篇:反射机制详解

    一 什么是反射 xff1a xff08 1 xff09 Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息 xff0c 从而操作类或对象的属性和方法 本质是JVM得到class对象之后 xff0c 再通过class对象进行反编
  • 使用linux裁剪树莓派完整sd卡镜像

    解决了最小镜像的制作问题以后 xff0c 就发现手里已经积攒了不少用Win32DiskImager制作的完整sd卡镜像 虽然压缩过了以后很小 xff0c 但是在恢复镜像时32G大小的写入速度简直慢到龟速 xff0c 所以我通过Ubuntu来
  • Arch 安装中文输入法

    推荐安装小狼毫输入法 安装 从官方仓库安装ibus软件包 xff1a span class hljs comment pacman S ibus span 此外 xff0c 为了启动ibus的Qt应用程序支持 安装ibus qt软件库 xf
  • angular11报错Can‘t bind to ‘ngForOf‘ since it isn‘t a known property of ‘tr‘. 三种排查办法以及解决方案

    当你遇到Can t bind to ngForOf since it isn t a known property of tr 34 无法绑定到 ngforof xff0c 因为它不是 tr 的已知属性 xff08 可能问题一 xff1a
  • 如何禁止DELETE、PUT、OPTIONS、TRACE、HEAD等协议访问应用程序

    简介 WebDAV xff08 Web based Distributed Authoring and Versioning xff09 是基于 HTTP 1 1 的一个通信协议 它为 HTTP 1 1 添加了一些扩展 xff08 就是在
  • c++对象模型系列

    一 指针与引用 一 概括 指针和引用 xff0c 在C 43 43 的软件开发中非常常见 xff0c 如果能恰当的使用它们能够极大的提 高整个软件的效率 xff0c 但是很多的C 43 43 学习者对它们的各种使用情况并不是都了解 xff0
  • ProxmoxVE 6.4-13 (PVE)安装 OpenWrt

    创建虚拟机没什么好说的 xff0c 和大多数教程一样 xff0c 主要记录下我遇到的问题 img2kvm报错 storage 39 vm 103 disk 0 39 does not exist 吐槽 xff1a 这玩意官网打不开 xff0
  • IOS学习笔记8—UITableViewController

    UITableViewController是IOS开发中一个比较重要的试图控制器 xff0c 是集成了UITableView视图的控制器 xff0c 在实际开发中经常用到 xff0c 功能非常强大 xff0c 可定制性也很高 xff0c 下