- 浏览: 551358 次
- 性别:
- 来自: 石家庄
文章分类
最新评论
-
toyota2006:
thank you!
适配器(Adapter)模式 -
910014107:
收藏一下
JIRA安装和破解 -
wangchaobashen:
注册完是一年期的License,请问这个期限该如何修改呢?
JIRA安装和破解 -
ihqn19:
总而言之,就是不知道你想表达什么就对了。
JS 面向对象的简单应用实例 -
jxls162408:
第四步更新tomcat libraris ,找不到那个包呀。怎 ...
JIRA安装和破解
可编辑的TableView
在编写简单的导航控制器基础上,让TableView的条目是可编辑的。这里示例将实现对条目的排序,删除等类似。实现的效果:
在编写简单的导航控制器基础上做如下修改。
首先要将存储数据的NSArray改为NSMutableArray,因为前者是不可变的。在头文件中:
@interface RootViewController : UITableViewController <UITableViewDelegate,UITableViewDataSource>{
NSMutableArray *dataItems;
在m文件中:
dataItems= [[NSMutableArray alloc] initWithObjects:@"张三",@"李四",nil];
然后,增加导航条右侧的按钮。先写出点击按钮的函数:
-(IBAction)toggleMove{
[self.tableView setEditing:!self.tableView.editing animated:YES];
}
下面,声明按钮并关联上述函数:
- (void)viewDidLoad {
dataItems= [[NSMutableArray alloc] initWithObjects:@"张三",@"李四",nil];
self.navigationItem.rightBarButtonItem=[[UIBarButtonItem alloc] initWithTitle:@"移动"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(toggleMove)];
[super viewDidLoad];
}
其实就是增加一句话。
添加有关显示风格等的函数:
-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{
return UITableViewCellEditingStyleNone;
}
-(BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath{
return YES;
}
其中,后者(canMoveRowAtIndexPath)如果不写,将是删除而不是移动。
在原有生成表条目的函数中增加一句话,用于显示右侧的控件:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
cell.showsReorderControl=YES;
}
下面是最关键的函数,在移动表条目时回调的函数:
-(void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *) fromIndexPath
toIndexPath:(NSIndexPath *)toIndexPath{
id object=[[dataItems objectAtIndex:[fromIndexPath row]] retain];
[dataItems removeObjectAtIndex:[fromIndexPath row]];
[dataItems insertObject:object atIndex:[toIndexPath row]];
[object release];
}
这样就可以实现上述的效果了,不过会出现这样的警告日志:
2010-10-13 22:42:47.220 NavTest[77449:207] WARNING: Using legacy cell layout due to delegate implementation of tableView:accessoryTypeForRowWithIndexPath: in <RootViewController: 0x5c04150>. Please remove your implementation of this method and set the cell properties accessoryType and/or editingAccessoryType to move to the new cell layout behavior. This method will no longer be called in a future release.
因为accessoryTypeForRowWithIndexPath函数已经不建议使用了,要替换成:
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
cell.showsReorderControl=YES;
cell.accessoryType=UITableViewCellAccessoryDetailDisclosureButton;
}
NSUInteger row=[indexPath row];
cell.textLabel.text=[dataItems objectAtIndex:row];
return cell;
}
同时删除tableView:accessoryTypeForRowWithIndexPath函数。这个问题不是编辑TableView时出现的
在编写简单的导航控制器基础上,让TableView的条目是可编辑的。这里示例将实现对条目的排序,删除等类似。实现的效果:
在编写简单的导航控制器基础上做如下修改。
首先要将存储数据的NSArray改为NSMutableArray,因为前者是不可变的。在头文件中:
@interface RootViewController : UITableViewController <UITableViewDelegate,UITableViewDataSource>{
NSMutableArray *dataItems;
在m文件中:
dataItems= [[NSMutableArray alloc] initWithObjects:@"张三",@"李四",nil];
然后,增加导航条右侧的按钮。先写出点击按钮的函数:
-(IBAction)toggleMove{
[self.tableView setEditing:!self.tableView.editing animated:YES];
}
下面,声明按钮并关联上述函数:
- (void)viewDidLoad {
dataItems= [[NSMutableArray alloc] initWithObjects:@"张三",@"李四",nil];
self.navigationItem.rightBarButtonItem=[[UIBarButtonItem alloc] initWithTitle:@"移动"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(toggleMove)];
[super viewDidLoad];
}
其实就是增加一句话。
添加有关显示风格等的函数:
-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{
return UITableViewCellEditingStyleNone;
}
-(BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath{
return YES;
}
其中,后者(canMoveRowAtIndexPath)如果不写,将是删除而不是移动。
在原有生成表条目的函数中增加一句话,用于显示右侧的控件:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
cell.showsReorderControl=YES;
}
下面是最关键的函数,在移动表条目时回调的函数:
-(void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *) fromIndexPath
toIndexPath:(NSIndexPath *)toIndexPath{
id object=[[dataItems objectAtIndex:[fromIndexPath row]] retain];
[dataItems removeObjectAtIndex:[fromIndexPath row]];
[dataItems insertObject:object atIndex:[toIndexPath row]];
[object release];
}
这样就可以实现上述的效果了,不过会出现这样的警告日志:
2010-10-13 22:42:47.220 NavTest[77449:207] WARNING: Using legacy cell layout due to delegate implementation of tableView:accessoryTypeForRowWithIndexPath: in <RootViewController: 0x5c04150>. Please remove your implementation of this method and set the cell properties accessoryType and/or editingAccessoryType to move to the new cell layout behavior. This method will no longer be called in a future release.
因为accessoryTypeForRowWithIndexPath函数已经不建议使用了,要替换成:
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
cell.showsReorderControl=YES;
cell.accessoryType=UITableViewCellAccessoryDetailDisclosureButton;
}
NSUInteger row=[indexPath row];
cell.textLabel.text=[dataItems objectAtIndex:row];
return cell;
}
同时删除tableView:accessoryTypeForRowWithIndexPath函数。这个问题不是编辑TableView时出现的
发表评论
-
画板使用
2011-04-13 15:46 3366Painting.h #import <UIKit/UI ... -
UIImage应用与内存管理
2011-03-24 10:44 4066用UIImage加载图像的方法很多,最常用的是下面两种: ... -
NSMutableArray与NSArray的区别
2011-03-21 16:05 24801: NSMutableArray能添加、插入、删除对象,而 ... -
iPhone/iPad 开发:录音及声音播放
2011-01-21 15:30 4710-(IBAction) recordOrStop: (id) ... -
iphone/ipad开发:编写声控红旗飘飘
2011-01-21 15:24 1497见附件Flag.zip -
TableView 的使用 实例二
2010-12-14 16:06 20735在实例一我们做了一个最基本的导航列表(其实还没有导航功能,只不 ... -
TableView 的使用 实例一
2010-12-14 13:45 10442TableView 是iphone/ipad中常常会用到的导航 ... -
iPhone/iPad 开发: 解析本地/网络上的xml文件(实例建附件)
2010-11-16 11:46 49461、解析本地xml文件 //找到本地test.xml文件 ... -
iPhone/iPad 开发: Objective-C 接分字符串成数组(类似java 的 split)
2010-11-11 14:46 6787在很多语言如 java , ruby , python中都有将 ... -
iPhone/iPad SQLite3 简明 使用 实例
2010-11-02 11:54 6839简单sqlite使用 sqlite是嵌入式的和轻量级的sql数 ... -
iPhone/iPad Timer 使用
2010-10-22 16:54 1873//以下代码为每隔1.5秒执行一次autoPlay函数 [ ... -
视图翻转问题
2010-10-22 16:47 1611//实现shouldAutorotateToInterface ... -
解决子view被ViewController遮挡的问题
2010-10-22 16:42 2146ViewController在加载子View的时候会出现子Vi ... -
iPhone/iPad 动画效果切换画面
2010-10-22 11:48 3387iPhone/iPad 动画效果切换画面 -(void)s ... -
内存管理总结
2010-10-22 11:40 1238iPhone系统中的Objective-C的内存管理机制是 ... -
iPhone/iPad 读写 Plist文件
2010-10-22 11:36 4862iPhone/iPad 读写 Plist文件 1.写Pli ... -
iPhone开发经典语录集锦
2010-10-22 11:21 1161引用1:如果无法保证子类行为的一致性,那么就用委托 If t ... -
深入理解iPhone委托模式兼谈iPhone生命周期
2010-10-22 11:10 2612深入理解iPhone委托模式兼谈iPhone生命周期 本文转载 ... -
得到application对象
2010-10-22 10:56 997application=[UIApplication shar ... -
iPhone/iPad程序 点击 休眠键委托事件 和 唤醒后的响应事件
2010-10-13 17:03 2020//休眠后委托事件 - (void)application ...
相关推荐
本教程主要探讨的是如何在iOS应用中实现一个可移动单元格的TableView,让用户能够自由调整列表中元素的顺序,无需进入编辑模式。这个特性适用于那些需要用户自定义排序的场景,比如任务管理器、音乐播放列表等。 ...
本示例"TableViewExample.zip"应该是包含了创建和使用UITableView的一个实例项目,适合于iPhone和iPad设备。下面我们将深入探讨UITableView的相关知识点。 1. UITableView基本结构: UITableView由多个单元格...
### 专业iPhone与iPad应用程序开发知识点汇总 #### 一、导言 本书《专业iPhone与iPad应用程序开发》是一本深入探讨iOS平台应用开发的专业书籍,旨在帮助开发者掌握iOS应用程序开发的核心技术和最佳实践。作者Gene ...
来源:Licence:BSD平台:iOS设备:iPhone / iPad作者:Florian Mielke 实现单元格可移动的列表。用户可以移动列表中任意单元格,从而改变单元格的顺序。用户移动过程中不需要让列表处于可编辑模式(edit mode...
2. **弹出视图**:标签提到的“弹出视图”可能指的是UIPopoverController(iPad)或UIAlertController(iPhone/iPad通用)。在购物车功能中,弹出视图可能用于展示商品详情、编辑购物车内容或确认订单。实现时需要...
《Beginning iPhone Development》是一本专为初学者设计的iOS应用开发指南,涵盖了使用Apple的Swift编程语言和Xcode集成开发环境(IDE)进行iPhone和iPad应用程序开发的基础知识。这本书源码的提供,使得读者能够更...
iOS7的开发是iPhone和iPad应用开发者的必经之路。这个操作系统引入了多项新技术和界面改进,对于准备开始学习iOS开发的人来说,掌握iOS7的开发技能是迈向成功的基石。 #### 事务管理应用开发 事务管理应用(To-do ...
这有助于确保你的应用在iPhone和iPad上都有良好的表现。 8. **代码中的实现**:在ViewController的`viewDidLoad`方法中,通常无需像动态Cell那样注册Cell类或重写`numberOfSectionsInTableView`和`tableView:...