iOS开发日记1-tableview编辑
今天博主有一個tableview編輯的需求,遇到了一些困難點,在此和大家分享,能夠共同進步.
tableview的編輯是通過[self.tableview setEditing: BOOL1 animotion: BOOL2];進入的,如果需要進入編輯模式,則調(diào)用方法,將BOOL1改為YES.如果要退出編輯模式,則調(diào)用方法,將BOOL1改為NO.BOOL2為是否使用動畫.
如果你想將編輯這個button由文字改為圖片,想通過setBackGroudImage這個方法替換文字,你會發(fā)現(xiàn)圖片會因為無法設(shè)置frame而產(chǎn)生拉伸,效果不理想.解決方法:你可以自定義rightBarButtonItem,重寫代理方法.下面將tableview的編輯的代碼貼出來,與大家分享
- (void)viewDidLoad {
? ? [super viewDidLoad];
?
? ? //編輯按鈕
? ? self.navigationItem.rightBarButtonItem = self.editButtonItem;
? ? self.navigationItem.rightBarButtonItem.title = @"編輯";
? ? self.navigationItem.rightBarButtonItem.tintColor=[UIColor blackColor];
}
#pragma mark---------tableView的編輯(刪除,插入)
//點擊編輯按鈕
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
? ? [super setEditing:editing animated:animated];
? ? // Don't show the Back button while editing.
//? ? [self.navigationItem setHidesBackButton:editing animated:YES];
? ? if (editing) {
? ? ? ? self.navigationItem.rightBarButtonItem.title = @"完成";
? ? ? ? NSLog(@"abc");
? ? }else {//點擊完成按鈕
? ? ? ? self.navigationItem.rightBarButtonItem.title = @"編輯";
? ? ? ? NSLog(@"123");
? ? }
? ? [_customView.tableView setEditing:editing animated:YES];
}
//2.設(shè)置定制分區(qū)(section)中的行(row)是否可以被編輯
-(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
//? ? if (indexPath.section==0) {
//? ? ? ? return NO;
//? ? }
? ? return YES;
}
//3.設(shè)置指定的分區(qū)(section)的行(row)編輯的樣式(添加,刪除)
-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
? ? if (indexPath.section==1) {
? ? ? ? return UITableViewCellEditingStyleInsert;
? ? }
? ? return UITableViewCellEditingStyleDelete;
}
//4.編輯完成(先操作數(shù)據(jù)源,再修改UI)
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
? ? if (editingStyle==UITableViewCellEditingStyleDelete) {
? ? ? ? NSLog(@"刪除");
? ? ? ? //同步更新beginUpdates 和 endUpdates 之間修改的UI和數(shù)據(jù)
? ? ? ? [_customView.tableView beginUpdates];
?? ? ? ?
? ? ? ? //1.刪除數(shù)據(jù)
? ? ? ? NSString *key=_allDataDic.allKeys[indexPath.section];
? ? ? ? NSMutableArray *array=_allDataDic[key];
? ? ? ? [array removeObjectAtIndex:indexPath.row];
? ? ? ? //2.刪除UI
? ? ? ? //刪除行
? ? ? ? [_customView.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationLeft];
? ? ? ? if (array.count==0) {
?? ? ? ? ? ?
? ? ? ? ? ? //刪除區(qū)頭上的數(shù)據(jù)(刪除key對應(yīng)的小數(shù)組)
? ? ? ? ? ? NSString *key=_allDataDic.allKeys[indexPath.section];
? ? ? ? ? ? [_allDataDic removeObjectForKey:key];
?
? ? ? ? ? ? //當某個分區(qū)中只剩一個cell的時候(或者小數(shù)組中只剩一個數(shù)據(jù)的時候),刪除時,也要把區(qū)頭刪除掉
? ? ? ? ? ? NSIndexSet *indexSet=[NSIndexSet indexSetWithIndex:indexPath.section];
? ? ? ? ? ? [_customView.tableView deleteSections:indexSet withRowAnimation:UITableViewRowAnimationLeft];
? ? ? ? }
?? ? ? ?
? ? ? ? [_customView.tableView endUpdates];
?? ? ? ?
? ? }else if (editingStyle==UITableViewCellEditingStyleInsert)
? ? {
? ? ? ? NSLog(@"插入");
? ? ? ? //1.插入數(shù)據(jù)
? ? ? ? NSString *key=_allDataDic.allKeys[indexPath.section];
? ? ? ? NSMutableArray *array=_allDataDic[key];
? ? ? ? [array insertObject:@"昌平" atIndex:indexPath.row];
? ? ? ? //2.插入UI(cell)? ? ? ??
? ? ? //? NSIndexPath *indexPath1=[NSIndexPath indexPathForRow:0 inSection:indexPath.section];//保證每次插入數(shù)據(jù)都在第一行
? ? ? ? [_customView.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationLeft];? ? ? ??
? ? }
}
?
http://www.jianshu.com/p/7c3d72fd9616?plg_nld=1&plg_uin=1&plg_auth=1&plg_nld=1&plg_usr=1&plg_vkey=1&plg_dev=1
轉(zhuǎn)載于:https://www.cnblogs.com/Twisted-Fate/p/4727766.html
總結(jié)
以上是生活随笔為你收集整理的iOS开发日记1-tableview编辑的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Stream 与 byte[] 互转
- 下一篇: oracle 操作表