UITableViewController 编辑功能中的,添加,删除,修改
来源:互联网 发布:东华软件总部 编辑:程序博客网 时间:2024/05/16 07:07
想对UITableViewController进行编辑,得加入编辑按钮,在viewDidLoad中加入下代码
self.navigationItem.rightBarButtonItem = self.editButtonItem;
self.navigationItem.rightBarButtonItem.title = GROUPMANAGER;
编辑按钮切换功能时,会调用SetEdit事件,可以重写,如下
以下代理方法,设置表中,哪些行,可以进入编辑状态
// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
// Return NO if you do not want the specified item to be editable.
if (indexPath.section == 0) {
return YES;
}
else {
return NO;
}
}
以下代理方法,设置在编辑状态下,哪些行是删除功能,哪些行是添加功能
-(UITableViewCellEditingStyle) tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row == groupArray.count) {
return UITableViewCellEditingStyleInsert;
}
else {
return UITableViewCellEditingStyleDelete;
}
}
以下代理方法,表示执行删除或者添加功能
// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete the row from the data source
EntityGroup *group = [groupArray objectAtIndex:indexPath.row];
SqliteOperation *sqlOperation = [[SqliteOperation alloc] init];
[sqlOperation DeleteGroup:group.GroupID];
[sqlOperation release];
[(NSMutableArray*)groupArray removeObjectAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; }
else if (editingStyle == UITableViewCellEditingStyleInsert) {
[self addGroup];
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
}
}
而修改功能,则需要自定义一个UITableViewCell,其中一个包括UITextField,用于编辑内容
修改内容时完成时,UITextField会执行以下代理方法,前提是将当前的UITextField的delegate设置为代理方法所在类,一般是self
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
可以将UITextField的tag设置为表的行号,这样就根本tag找到相应的数据源,而修改数据源数据
可以直接在此保存!可以将UITextField,
因此在设置表行的代理方法中,需要这样设置
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UIImage *image;
static NSString *EditCellIdentifier =@"EditCell";
UITableViewCell *cell = nil;
cell = [tableView dequeueReusableCellWithIdentifier:EditCellIdentifier];
if ( cell== nil) {
cell = [[[NSBundle mainBundle] loadNibNamed:@"ConferencingGroupCell" owner:self options:nil] objectAtIndex:0];
}
EntityGroup *group = [groupArray objectAtIndex:indexPath.row];
//自定义cell ConferencingGroupCell
ConferencingGroupCell *editCell = (ConferencingGroupCell*)cell;
editCell.txtEdit.text = group.GroupName;
editCell.txtEdit.delegate = self;
editCell.lblDiscription.text = [NSString stringWithFormat:@"人数:%d",group.GroupNmuber];
editCell.txtEdit.tag = indexPath.row;
editCell.delegate = self;
editCell.accessoryType = group.isSelected ? UITableViewCellAccessoryCheckmark:UITableViewCellAccessoryNone;
return cell;
}
在自定义的cell中需要写如下代码,来达到完成编辑时的操作
//表示在编辑或者非编辑状态下,设置UITextField是否可用
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
// The user can only edit the text field when in editing mode.
[super setEditing:editing animated:animated];
txtEdit.enabled = editing;
}
//表示在编辑状态下,出现删除按钮时的代理方法
- (void)willTransitionToState:(UITableViewCellStateMask)state {
[super willTransitionToState:state];
if (state & UITableViewCellStateEditingMask) {
lblDiscription.hidden = YES;
btnDetail.hidden = YES;
}
}
//表示编辑状态下,删除按钮消失时的代理方法
- (void)didTransitionToState:(UITableViewCellStateMask)state {
[super didTransitionToState:state];
if (!(state & UITableViewCellStateEditingMask)) {
lblDiscription.hidden = NO;
btnDetail.hidden = NO;
}
}
以上一定注意
直接在表中,添加一行时,要求能看到效果时,必须先在数据源中添加数据,如下
NSArray *localIndexPath = [NSArray arrayWithObject:[NSIndexPath indexPathForRow:contactArray.count inSection:1]];
[contactArray addObject:contact];
[tableView insertRowsAtIndexPaths:localIndexPath withRowAnimation:UITableViewRowAnimationFade];
直接在表中,删除一行,并且能看到删除效果时,也必须先在数据源中删除相应的数据,如下
NSArray *groupIndexPath = [NSArray arrayWithObject:indexPath];
[(NSMutableArray*)group.ContactArray removeObjectAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:groupIndexPath withRowAnimation:UITableViewRowAnimationFade];
- UITableViewController 编辑功能中的,添加,删除,修改
- UITableViewController 编辑功能中的,添加,删除,修改
- UITableViewController 编辑功能中的,添加,删除,修改
- UIday1001:UITableView 2 编辑(添加、删除)、移动、UITableViewController
- TableView中的编辑删除功能
- XML---添加 删除、编辑、修改并保存、添加、查找、生成XML按钮并完成对应的功能
- StringBuffer-常见功能-添加-删除-修改
- jQuery(4)--实现用户的添加,删除,编辑功能
- GridView动态绑定数据、编辑、修改、删除及分页功能
- 使用SNMP编辑(添加/删除/修改)ARP表
- MFC:使用SNMP编辑(添加/删除/修改)ARP表
- 使用SNMP编辑(添加/删除/修改)ARP表
- 四.用户管理页面(显示所有的用户信息,同时为用户的添加,编辑,修改密码,删除,修改权限等功能提供相应的链接) UserMange.aspx
- 删除Docbar中的添加内容功能
- mybatis 中的批量添加、删除、修改
- mybatis 中的批量添加、删除、修改
- mybatis 中的批量添加、删除、修改
- mybatis 中的批量添加、删除、修改
- javax.net.ssl.SSLException: Not trusted server certificate
- Social Networks: The New Search?
- http://www.cnblogs.com/end/archive/2011/04/12/2013805.html
- 软件外包企业人才需求和人才成长职业规划
- (译)如何在cocos2d里面使用动画和spritesheet
- UITableViewController 编辑功能中的,添加,删除,修改
- Android调用手机拍照以及从相册选择照片
- 使用zindex属性让控件显示在最上层
- 函数模板
- VC++利用ATL开发COM组件
- JavaScript replace()
- Using a delegate to pass data between two forms.
- 学习 CleanupStack
- About Intellisense in VC++ 10