iOS5编程--官方例子代码研究--5.TableMultiSelect

097634e9169c6777120550ad61afb6bc-1.jpg 立即下载

本文档版权归NickTang所有,没有本人书面或电子邮件允许,不许转载,摘录,发表。多谢!


我们在使用tableview的时候,常常会用到删除功能,但是在5.0以前的版本中,我们没有办法一次通过界面删除多行,在iOS5中,这个功能加入近来了。

我们先看一下原先的删除界面的样式


下面是新增加的,可以选择多行的样式。


我们开始分析这个工程的代码。

首先,如果你是下载的2011/10/12的版本的话,工程中会有一个bug,当tableview处于不是编辑状态的时候,你会发现,点中table中的一行,程序没有反映,请打开MainWindow.xib文件。如下图所示:

右键点击MyViewController,在菜单中选择New Referencing Outlet,拉到MyTableViewController上,在弹出的面板上选择viewController.然后保存,编译,这样,你就可以看到在选择一行的时候,有一个新的view出现。

因此,这也是我们从这个例子代码中学到的第一点,

你会发现,MyViewController,EditButton等四个button都是和上面的Window是独立的,不从属于任何View Controller,但是它们又链接到MyTableViewController中的某个变量,这样的话,我们就可以通过xib的方式初始化这些界面相关的东西。你可以试着添加一些其他的元素,这些元素在xib被load近来的时候被初始化。

AppDelegate类没有什么好说的,请参考我原先的分析。

MyTableViewController是我们需要重点分析的:

我们看一下如何使得一个table view支持多行选择,

1.在viewDidLoad函数中:

self.tableView.allowsMultipleSelectionDuringEditing = YES;

这个allowsMultipleSelectionDuringEditing属性缺省是NO;当为NO的时候,就是老式的删除方式。

2.在函数

- (IBAction)editAction:(id)sender

中

[self.tableViewsetEditing:YESanimated:YES];

上面的这句话,使得table view开始可编辑状态。不论新的方式还是老的方式,都是这句话。

3.函数

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


在取消选择某一行的时候调用。所以在判断tableview如果是在编辑状态的时候,调用

NSArray *selectedRows = [self.tableViewindexPathsForSelectedRows];

来得到所以已选择的行,然后利用这个数组中数据的个数来更新导航栏上右button上的文本。

4.函数

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

在选中某一行的时候调用

首先判断是否table view在编辑状态,如果是,就更新导航栏的右button,如果不是,就导航到下一个view。

5.函数

- (IBAction)addAction:(id)sender

在导航栏右button是一个加号的时候被调用,这个时候,增加一行,并且调用

[self.tableViewscrollToRowAtIndexPath:[NSIndexPathindexPathForRow:(self.dataArray.count - 1) inSection:0]atScrollPosition:UITableViewScrollPositionBottomanimated:YES];


使得table view滚动到最后一行。



最后我增加一下老式的删除方式,

首先我们不能调用

self.tableView.allowsMultipleSelectionDuringEditing = YES;

或者把这个变量设置为NO;

其次增加一个函数如下

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

{

if (editingStyle ==UITableViewCellEditingStyleDelete) {

        [self.dataArrayremoveObjectAtIndex:[indexPathrow]];

//[myTable reloadData];

        [self.tableViewdeleteRowsAtIndexPaths:[NSArrayarrayWithObject:indexPath]withRowAnimation:UITableViewRowAnimationFade];

}

}

其他的代码就不再解释了,都是很普通的逻辑和函数调用,

注意,这个多选的模式只能在iOS5中使用。

智能体式AI漫游指南中文版 智能体式AI漫游指南中文版、智能体式AI指南英文原版 立即下载

相关推荐

国央企如何利用AI工具提升科技创新项目管理与成果转化能力?.docx

国央企如何利用AI工具提升科技创新项目管理与成果转化能力?

IOS5基础十五-----展示详情表和校验表

暂时先贴代码,其他的全部写完在补充! #import "BIDSecondLevelViewController.h" @interface BIDDisclosureButtonController : BIDSecondLevelViewController @property (strong,nonatomic) NSArray *list; @end

期盼的骆驼专栏 878

融合高斯扰动与竞争学习的改进型多目标部落竞争与成员合作算法(IMOCTCM)求解DTLZ1-DTLZ7及-盘式制动器设计研究(Matlab代码实现)

内容概要:本文档名为《Plecs全桥LLC谐振变换器仿真模型.txt》,但实际内容并非聚焦于该主题,而是一份涵盖多个科研领域的Matlab/Simulink仿真资源汇总清单。文档列举了包括多目标优化算法(如IMOCTCM、MOWAA)、电力电子变换器控制(如LLC谐振变换器、DAB变换器)、电机控制(如PMSM无感控制)、状态估计(如卡尔曼滤波)、微电网调度、无人机路径规划、图像处理、信号处理等多个方向的仿真研究课题,涉及Matlab、Python、Simulink、PSCAD等多种工具和编程语言。文档末尾频繁出现“完整资源下载:公众号——荔枝科研社”及百度网盘链接,表明其核心用途是推广和分享一系列科研仿真资料,服务于学术交流与资源共享。; 适合人群:适用于电气工程、自动化、控制科学与工程、电力系统、电子信息、机械电子、计算机科学等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①为科研工作者提供丰富的Matlab/Simulink仿真案例参考和技术实现思路;②辅助高校师生完成课程设计、毕业设计或学术论文复现工作;③通过获取开源共享资源加速个人或团队的项目开发与算法验证进程。; 阅读建议:该文档属于资源目录性质,缺乏连贯的技术论述与逻辑结构,建议使用者根据自身研究方向筛选相关条目,结合提供的代码和模型进行学习与实践,并注意核实所下载资源的有效性、完整性以及代码运行环境的兼容性。

iOS5编程--官方例子代码研究--6.MailComposer

本文档版权归NickTang所有,没有本人书面或电子邮件允许,不许转载,摘录,发表。多谢! 我们很多时候需要在iOS程序中内置邮件发送功能,而这个例子基本上提供了我们所需要的所有功能。 注意一下几点 1.这个程序必须在设备上运行,关于如何在设备上运行程序,不是本文需要讲的,

NickTang的专栏 1万+

储能双向Buck-Boost+模型预测电流控制+电压下垂控制仿真【附参考文献】(Simulink仿真实现)

内容概要:本文档详细介绍了一套针对储能双向Buck-Boost变换器的Simulink仿真资源,融合模型预测电流控制与电压下垂控制策略,适用于微电网及分布式能源系统中的能量管理与稳定控制。仿真模型全面呈现了双向Buck-Boost电路在储能系统充放电过程中的动态行为,重点引入模型预测控制(MPC)与下垂控制相结合的先进控制算法,有效提升了系统的响应速度、稳定性与鲁棒性。文档不仅提供了完整的仿真模型结构与参数设置,还附有详实的参考文献,便于使用者深入理解控制原理并开展理论延伸研究,是电力电子、新能源系统等领域科研与教学的重要实践资料。; 适合人群:电气工程、自动化、新能源等相关专业的硕士博士研究生、科研人员以及从事电力电子变换器与微电网系统设计的工程师。; 使用场景及目标:①用于微电网中储能系统的建模与协调控制策略研究;②开展模型预测控制(MPC)与电压下垂控制在直流变换器中的联合应用仿真分析;③支撑高校电力电子课程实验、毕业设计及科研项目开发,深化对双向DC-DC变换器非线性特性和先进控制算法实现机制的理解。; 阅读建议:建议结合Simulink仿真模型与配套文档同步学习,重点关注控制器的设计逻辑、参数整定方法及系统动态响应特性,推荐对比传统PI控制与先进控制策略的仿真结果,以深入掌握不同控制方案的性能差异与优化路径。

基于双向Buck-Boost电路的锂电池储能充电+放电控制Simulink仿真

内容概要:本文档围绕基于双向Buck-Boost电路的锂电池储能系统展开,详细介绍了其在充电与放电过程中的Simulink仿真设计与实现方法。通过构建双向Buck-Boost电路模型,结合模型预测电流控制与电压下垂控制策略,实现了对锂电池储能系统的高效能量管理与双向功率流动控制。文档提供了完整的仿真模型架构、控制算法设计流程、系统稳定性分析及动态响应性能验证,涵盖了从主电路建模到闭环控制参数整定的关键环节,适用于储能系统中能量双向变换的科研与工程实践。; 适合人群:具备电力电子、自动控制理论及新能源系统基础知识的高校研究生、科研人员以及从事储能系统、微电网、电动汽车等领域技术研发的工程技术人员。; 使用场景及目标:①用于锂电池储能系统的教学实验与科研仿真研究;②支撑微电网、电动汽车、V2G(Vehicle-to-Grid)等应用场景中的能量双向变换与功率调度研究;③深入理解Buck-Boost电路的工作原理及其在实际系统中的先进控制策略实现机制。; 阅读建议:建议在Simulink环境中实际搭建并调试所提供的仿真模型,重点关注控制环路的设计逻辑与参数整定过程,结合文中引用的参考文献深化对系统建模、控制理论与工程应用之间关系的理解。

UIWebView和网页交互的研究初探

很多时候,我们使用UIWebView不是简单的显示一个网页这么简单的,我们需要更多的交互工作,譬如能否通过Objective-C的代码来控制网页的显示内容,能否监控网页上的点击事件等等,这里我是根据网上的资料做的演示,因此会有很多和网络已有的资料相同的地方。 此外,关于UIWe

NickTang的专栏 7793

08-SD卡-TF卡硬件电路设计

SD卡-TF卡硬件电路设计

weixin_66510961的博客 8261

使用NSObject中的函数起线程

下面的这些函数是定义在NSObject中的,关于它们的具体含义,你可以在官方文档中找,或者google之,这里就不啰嗦了。 Sending Messages – performSelector:withObject:afterDelay: – performSelect

NickTang的专栏 7614

OCR开发实战:如何用PaddleOCR C++版实现本地文字识别(附模型文件处理技巧)

本文详细介绍了如何使用PaddleOCR C++版实现本地文字识别,包括环境搭建、工程编译、运行时优化等全流程。重点讲解了在VS2019/VS2022环境下配置PaddleOCR的CPU推理性能优化技巧,以及模型文件处理的实际应用方法,帮助开发者高效完成OCR本地化部署。

devops8pract的博客 335

关于STM32编译报错:Error: L6218E: Undefined symbol SystemInit (referred from startup_stm32f10x_md.o).

今天新建工程发现出现一个错误 —— …\Output\CG.axf: Error: L6218E: Undefined symbol SystemInit (referred from startup_stm32f10x_md.o). 但我觉得我的操作没有任何问题,而且配置和上一个文件比较是一模一样的。 于是我开始百度查询,然后发现了下面几个博客—— @weixin_44133391——STM32 编译错误 @dorlolok——iel5 编译报错 error: L6235E: More than one

纯粹,学术,热爱。 9403

iOS线程关键资源加锁

新建一个view-based application, viewcontroller.h的代码如下: #import @interface tConditionViewController : UIViewController {     int tickets;

NickTang的专栏 6712

数学建模 种群竞争模型 学习笔记

模型背景 应用场景 种群竞争模型 例如 s1=0.5,则表示对于供养甲的资源来讲,单位数量的乙的消耗为单位数量的甲的0.5倍,即表示乙对于该资源的占有能力是甲的0.5倍(即竞争力弱) 仿真结果及分析 (1)设置自然增长率 r1=r2=1 (2)改变自然增长率 r1=r2=0.3 (3)修改甲和乙的最大容量 n1=10000, n2=100 (4)修改甲和乙的初始数量 x1=10, x...

Test_tju的博客 2028

使用NSThread起线程

NSThread是起线程的主角,大部分时候我们使用这个类。 由于本人macbook暂时不能用,所以这里只贴出代码: 建一个view-based application. 在viewcontroller.h中 @interface tNSThreadViewControll

NickTang的专栏 5868

海思ISP调优实战:从实验室到真实场景的IPC相机图像质量优化指南

本文深入探讨海思ISP调优在IPC相机图像质量优化中的实战应用,从实验室标定到真实场景部署的全链路调优方法。重点解决光照动态范围、色温变化和噪声特性等核心问题,提供AE权重表配置、CCM标定、3DNR时域滤波等关键技术方案,帮助实现从理论到实践的图像质量提升。

s3t4u的博客 750

【SigmaStudio】自定义算法组件之源码规范(二)

工作中自定义算法组件一般是dll文件,生成dll文件需要XML文件和DLB文件,记录一下DLB文件代码的编码规范,定义SigmaStudio SHARC算法开发的编码规则,涵盖函数原型、内存管理、接口结构体等关键要求,确保算法模块与SigmaStudio环境兼容

liang_song的博客 1377

iOS本地存储--c语言方式例子

背景,iOS其实和Mac的系统是一脉相承,而它们其实是unix的内核,所以你在unix(linux)上面可以使用的api,在这里也是可以用的。 很多时候,我们需要保存一些信息在本地,iOS SDK提供了很好的接口支持,但是有时候,我们可能需要使用标准C的方式存取文件,下面就是这

NickTang的专栏 4656

Experion PKS系列开发:I_O模块_ExperionPKS与第三方I-O模块的集成

通过上述步骤,可以成功将第三方I/O模块集成到Honeywell Experion PKS系统中,实现对现场设备的监视和控制。集成过程中需要注意选择合适的第三方模块,配置正确的通信参数,编写正确的控制逻辑,并进行充分的测试,以确保系统的稳定性和可靠性。不同的通信协议(如Modbus、Profibus、Ethernet/IP、CANopen、OPC UA)有其独特的配置和编程方法,但总体流程相似。在实际应用中,根据项目需求选择合适的协议和模块,可以有效提高系统的灵活性和适应性。

zhubeibei168的博客 1103

使用NSOperationQueue起线程

只有代码,解释以后加上: #import @interface tOQViewController : UIViewController {     NSOperationQueue *myOQ; } -(void)doSomething; @end

NickTang的专栏 2241

ollama使用CPU安装qwen-coder模型_并在eclipse中使用ai coder插件_配置本地qwen-coder模型_ollama常用操作记录---AI大模型应用探索0002

文章摘要:作者分享了在Windows 10上安装和使用Ollama模型的过程。尝试了不同规模的qwen-coder模型(7b、1.5b和0.5b),发现7b模型响应极慢(需35分钟),而1.5b模型表现较好(3秒响应)。最终选择1.5b版本用于代码开发辅助,支持多语言自动补全。同时提到在最新版Eclipse中的AIcoder配置问题。文章重点比较了不同模型规模在CPU环境下的实际使用体验和响应速度差异。

添柴程序猿的专栏 683

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

http请求的源码

网络编程是iOS开发的重要一环,重要性就不多讲了,下面的代码也比较简单,我在这里也不多解释了。       NSString *url = 。。。//这里打包URL   NSURLRequest *theRequest=[NSURLRequest requestWith

NickTang的专栏 2148

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Base64转换的代码。

不解释。 static char base64EncodingTable[64] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',

NickTang的专栏 1461

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: 在Linux上安装和编译GNUstep
下一篇: 使用定时器,以及形成一个简单的动画。
NickTang
博客等级 码龄24年 261粉丝 49原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值