本文档版权归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中使用。
分享到:
相关推荐
思科 cisco ios 镜像 c7200-advipservicesk9-mz.124-2.T.bin 文件由多位CCIE水平人员测试使用后拷贝,dy下可用.
思科 cisco ios 镜像 unzip-c7200-advsecurityk9-mz.124-11.T.bin 文件由多位CCIE水平人员测试使用后拷贝,dy下可用
vuforia-sdk-ios-6-5-25.zip vuforia sdk for iOS Use the Vuforia SDK to build Android, iOS, and UWP(win10+) applications for mobile devices and digital eyewear. Apps can be built with Android Studio, ...
思科 cisco ios 镜像 c7200-is-mz.124-19b.bin 文件由多位CCIE水平人员测试使用后拷贝,dy下可用.
ubuntu-18.04.5-desktop-amd64.iso,ubuntu18.04.5镜像,官方资源,百度网盘下载链接
思科 cisco 镜像 ios c2600-adventerprisek9-mz.124-18.bin 文件由多位CCIE水平人员测试使用后拷贝,dy下可用
思科3650交换机 ios 最新版cisco c3560G ios c3560-ipservicesk9-mz.122-55.SE
这个项目的源代码被压缩在一个名为"iOS-Tagent-master.zip"的文件中,里面包含了实现自动化测试所需的全部组件和资源。在本文中,我们将深入探讨iOS自动化测试的关键概念、技术以及iOS-Tagent-master项目的核心特点...
CISCO 3560 IOS ,具体版本为c3560-ipservicesk9-mz.122-55.SE.bin
Python是iOS-private-api-checker的主要编程语言,以其简洁明了的语法和强大的库支持而广受开发者喜爱。在这个项目中,Python负责解析Objective-C或Swift代码,识别可能引用私有API的函数和方法。通过使用Python的...
《Cisco Catalyst 交换机IOS:c2691-advsecurityk9-mz.124-11.T2.bin 深度解析》 在IT领域,Cisco Catalyst系列交换机以其高性能、高可靠性以及丰富的功能深受业界青睐。其中,交换机的操作系统——Cisco IOS...
2010年推出: CISCO2950最新IOS映像:c2950-i6k2l2q4-mz.121-22.EA14
通过阅读官方文档或源代码,我们可以更深入地了解这个库的工作原理,从而更好地利用它来满足我们的需求。 总的来说,`py_ios_device-2.1.5.tar.gz`是Python开发者处理iOS设备的强大工具。它简化了iOS设备的管理和...
cisco交换机IOS unzip-c3725-adventerprisek9-mz.124-15.T5.bin,比较大,这里是part1
思科 cisco ios 镜像 c3745-advipservicesk9-mz.124-3c.bin 文件由多位CCIE水平人员测试使用后拷贝,dy下可用
CISCO ASA 5505 最新IOS asa844-1-8k.bin
Cisco 4506E IOS cat4500e-entservicesk9-mz.152-1.E.bin
cisco 2950 ios c2950-i6k2l2q4-mz.121-22.EA13.bin
《iOS 5编程实战秘籍》源代码 这个压缩包包含的是《iOS 5 Programming Cookbook》一书的配套源代码,这本书是针对iOS开发者的宝贵资源,尤其对于那些正在学习和提升iOS 5应用程序开发技能的程序员来说。作者通过一...
总之,"ios-URLNavi.zip"项目提供了一个实用的例子,教导iOS开发者如何利用URL Scheme与第三方地图应用进行交互,实现灵活的导航功能。通过深入研究和理解该项目,开发者不仅可以提升自己的编程技能,还能更好地理解...