IOS之表视图单元格删除、移动及插入_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > IOS之表视图单元格删除、移动及插入

IOS之表视图单元格删除、移动及插入

 2014/7/24 10:22:31  wx0123  程序员俱乐部  我要评论(0)
  • 摘要:1.实现单元格的删除,实现效果如下Cpp代码-(void)viewDidLoad{[superviewDidLoad];//设置导航栏self.editButtonItem.title=@"编辑";self.navigation.rightBarButtonItem=self.editButtonItem;[selfinitTableViewData];//Doanyadditionalsetupafterloadingtheview.}-(void
  • 标签:iOS

 

1.实现单元格的删除,实现效果如下

   

Cpp代码class="Apple-converted-space"> javascripts/syntaxhighlighter/clipboard_new.swf" type="application/x-shockwave-flash">ViewData%5D%3B%0A%09%2F%2F%20Do%20any%20additional%20setup%20after%20loading%20the%20view.%0A%7D%0A%0A-%20(void)didReceiveMemoryWarning%0A%7B%0A%20%20%20%20%5Bsuper%20didReceiveMemoryWarning%5D%3B%0A%20%20%20%20%2F%2F%20Dispose%20of%20any%20resources%20that%20can%20be%20recreated.%0A%7D%0A%0A-(void)initTableViewData%7B%0A%20%20%20%20NSBundle%20*bundle%20%3D%20%5BNSBundle%20mainBundle%5D%3B%0A%20%20%20%20NSString%20*plistPath%20%3D%20%5Bbundle%20pathForResource%3A%40%22user_head%22%20ofType%3A%40%22plist%22%5D%3B%0A%20%20%20%20dataArr%20%3D%20%5B%5BNSMutableArray%20alloc%5D%20initWithContentsOfFile%3AplistPath%5D%3B%0A%7D%0A%0A-%20(NSInteger)tableView%3A(UITableView%20*)tableView%20numberOfRowsInSection%3A(NSInteger)section%0A%7B%0A%20%20%20%20return%20%5BdataArr%20count%5D%3B%0A%7D%0A%0A-%20(UITableViewCell%20*)tableView%3A(UITableView%20*)tableView%20cellForRowAtIndexPath%3A(NSIndexPath%20*)indexPath%0A%7B%0A%20%20%20%20static%20NSString%20*CellIdentifier%20%3D%20%40%22tableCell%22%3B%0A%20%20%20%20UITableViewCell%20*cell%20%3D%20%5BtableView%20dequeueReusableCellWithIdentifier%3ACellIdentifier%5D%3B%0A%20%20%20%20%0A%20%20%20%20NSUInteger%20row%20%3D%20%5BindexPath%20row%5D%3B%0A%20%20%20%20NSDictionary%20*rowDict%20%3D%20%5BdataArr%20objectAtIndex%3Arow%5D%3B%0A%20%20%20%20cell.textLabel.text%20%3D%20%20%5BrowDict%20objectForKey%3A%40%22itemName%22%5D%3B%0A%20%20%20%20NSLog(%40%22cell.label.text%20%3D%20%20%25%40%22%2C%5BrowDict%20objectForKey%3A%40%22itemName%22%5D)%3B%0A%20%20%20%20%0A%20%20%20%20NSString%20*imagePath%20%3D%20%5BrowDict%20objectForKey%3A%40%22itemImagePath%22%5D%3B%0A%20%20%20%20cell.imageView.image%20%3D%20%5BUIImage%20imageNamed%3AimagePath%5D%3B%0A%20%20%20%20NSLog(%40%22cell.image.image%20%20%3D%20%20%25%40%22%2CimagePath)%3B%0A%20%20%20%20%0A%20%20%20%20cell.accessoryType%20%3D%20UITableViewCellAccessoryDisclosureIndicator%3B%0A%20%20%20%20%0A%20%20%20%20return%20cell%3B%0A%7D%0A%0A%2F%2F%E9%80%89%E4%B8%ADCell%E5%93%8D%E5%BA%94%E4%BA%8B%E4%BB%B6%0A-%20(void)tableView%3A(UITableView%20*)tableView%20didSelectRowAtIndexPath%3A(NSIndexPath%20*)indexPath%7B%0A%20%20%20%20%5BtableView%20deselectRowAtIndexPath%3AindexPath%20animated%3AYES%5D%3B%2F%2F%E9%80%89%E4%B8%AD%E5%90%8E%E7%9A%84%E5%8F%8D%E6%98%BE%E9%A2%9C%E8%89%B2%E5%8D%B3%E5%88%BB%E6%B6%88%E5%A4%B1%0A%20%20%20%20NSUInteger%20row%20%3D%20%5BindexPath%20row%5D%3B%0A%20%20%20%20NSDictionary%20*rowDict%20%3D%20%5BdataArr%20objectAtIndex%3Arow%5D%3B%0A%20%20%20%20NSString%20*userName%20%3D%20%20%5BrowDict%20objectForKey%3A%40%22itemName%22%5D%3B%0A%20%20%20%20NSLog(%40%22userName%3D%25%40%22%2CuserName)%3B%0A%7D%0A%0A%2F%2F%E8%BF%94%E5%9B%9E%E7%BC%96%E8%BE%91%E7%8A%B6%E6%80%81%E7%9A%84style%0A-%20(UITableViewCellEditingStyle)tableView%3A(UITableView%20*)tableView%0A%20%20%20%20%20%20%20%20%20%20%20editingStyleForRowAtIndexPath%3A(NSIndexPath%20*)indexPath%0A%7B%0A%20%20%20%20%2F%2FUITableViewCellEditingStyleInsert%0A%2F%2F%20%20%20%20return%20UITableViewCellEditingStyleNone%3B%0A%20%20%20%20return%20UITableViewCellEditingStyleDelete%3B%0A%7D%0A%2F%2F%E5%AE%8C%E6%88%90%E7%BC%96%E8%BE%91%E7%9A%84%E8%A7%A6%E5%8F%91%E4%BA%8B%E4%BB%B6%0A-%20(void)tableView%3A(UITableView%20*)tableView%20commitEditingStyle%3A(UITableViewCellEditingStyle)editingStyle%0AforRowAtIndexPath%3A(NSIndexPath%20*)indexPath%0A%7B%0A%20%20%20%20if%20(editingStyle%20%3D%3D%20UITableViewCellEditingStyleDelete)%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%5BdataArr%20removeObjectAtIndex%3A%20indexPath.row%5D%3B%0A%20%20%20%20%20%20%20%20%2F%2F%20%20%20%20%20%20%20%20%5BtableView%20insertRowsAtIndexPaths%3A%5BNSArray%20arrayWithObject%3AindexPath%5D%0A%20%20%20%20%20%20%20%20%2F%2F%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20withRowAnimation%3AUITableViewRowAnimationFade%5D%3B%0A%20%20%20%20%20%20%20%20%5BtableView%20deleteRowsAtIndexPaths%3A%5BNSArray%20arrayWithObject%3AindexPath%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20withRowAnimation%3AUITableViewRowAnimationFade%5D%3B%0A%20%20%20%20%20%20%20%20%5BtableView%20reloadData%5D%3B%0A%20%20%20%20%7D%20%0A%7D%0A%2F%2FUIViewController%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E6%96%B9%E6%B3%95%EF%BC%8C%E7%94%A8%E4%BA%8E%E5%93%8D%E5%BA%94%E8%A7%86%E5%9B%BE%E7%BC%96%E8%BE%91%E7%8A%B6%E6%80%81%E5%8F%98%E5%8C%96%0A-%20(void)setEditing%3A(BOOL)editing%20animated%3A(BOOL)animated%20%7B%0A%20%20%20%20%5Bsuper%20setEditing%3Aediting%20animated%3Aanimated%5D%3B%0A%20%20%20%20%0A%20%20%20%20%5Bself.tableView%20setEditing%3Aediting%20animated%3AYES%5D%3B%0A%20%20%20%20if%20(self.editing)%20%7B%0A%20%20%20%20%20self.editButtonItem.title%20%3D%20%40%22%E5%AE%8C%E6%88%90%22%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20self.editButtonItem.title%20%3D%20%40%22%E7%BC%96%E8%BE%91%22%3B%0A%20%20%20%20%7D%0A%7D%0A%40end%0A" />ways" /> 收藏代码
  1. - (void)viewDidLoad  
  2. {  
  3.     [super viewDidLoad];  
  4.     //设置导航栏  
  5.      self.editButtonItem.title = @"编辑";  
  6.     self.navigation.rightBarButtonItem = self.editButtonItem;  
  7.     [self initTableViewData];  
  8.     // Do any additional setup after loading the view.  
  9. }  
  10.   
  11. - (void)didReceiveMemoryWarning  
  12. {  
  13.     [super didReceiveMemoryWarning];  
  14.     // Dispose of any resources that can be recreated.  
  15. }  
  16.   
  17. -(void)initTableViewData{  
  18.     NSBundle *bundle = [NSBundle mainBundle];  
  19.     NSString *plistPath = [bundle pathForResource:@"user_head" ofType:@"plist"];  
  20.     dataArr = [[NSMutableArray alloc] initWithContentsOfFile:plistPath];  
  21. }  
  22.   
  23. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section  
  24. {  
  25.     return [dataArr count];  
  26. }  
  27.   
  28. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  
  29. {  
  30.     static NSString *CellIdentifier = @"tableCell";  
  31.     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];  
  32.       
  33.     NSUInteger row = [indexPath row];  
  34.     NSDictionary *rowDict = [dataArr objectAtIndex:row];  
  35.     cell.textLabel.text =  [rowDict objectForKey:@"itemName"];  
  36.     NSLog(@"cell.label.text =  %@",[rowDict objectForKey:@"itemName"]);  
  37.       
  38.     NSString *imagePath = [rowDict objectForKey:@"itemImagePath"];  
  39.     cell.imageView.image = [UIImage imageNamed:imagePath];  
  40.     NSLog(@"cell.image.image  =  %@",imagePath);  
  41.       
  42.     cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;  
  43.       
  44.     return cell;  
  45. }  
  46.   
  47. //选中Cell响应事件  
  48. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{  
  49.     [tableView deselectRowAtIndexPath:indexPath animated:YES];//选中后的反显颜色即刻消失  
  50.     NSUInteger row = [indexPath row];  
  51.     NSDictionary *rowDict = [dataArr objectAtIndex:row];  
  52.     NSString *userName =  [rowDict objectForKey:@"itemName"];  
  53.     NSLog(@"userName=%@",userName);  
  54. }  
  55.   
  56. //返回编辑状态的style  
  57. - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView  
  58.            editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath  
  59. {  
  60.     //UITableViewCellEditingStyleInsert  
  61. //    return UITableViewCellEditingStyleNone;  
  62.     return UITableViewCellEditingStyleDelete;  
  63. }  
  64. //完成编辑的触发事件  
  65. - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle  
  66. forRowAtIndexPath:(NSIndexPath *)indexPath  
  67. {  
  68.     if (editingStyle == UITableViewCellEditingStyleDelete)  
  69.     {  
  70.         [dataArr removeObjectAtIndex: indexPath.row];  
  71.         //        [tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]  
  72.         //                         withRowAnimation:UITableViewRowAnimationFade];  
  73.         [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]  
  74.                          withRowAnimation:UITableViewRowAnimationFade];  
  75.         [tableView reloadData];  
  76.     }   
  77. }  
  78. //UIViewController生命周期方法,用于响应视图编辑状态变化  
  79. - (void)setEditing:(BOOL)editing animated:(BOOL)animated {  
  80.     [super setEditing:editing animated:animated];  
  81.       
  82.     [self.tableView setEditing:editing animated:YES];  
  83.     if (self.editing) {  
  84.      self.editButtonItem.title = @"完成";  
  85.     } else {  
  86.         self.editButtonItem.title = @"编辑";  
  87.     }  
  88. }  
  89. @end  

 2.移动单元格

 

Cpp代码  收藏代码
  1. //完成移动的触发事件,不添加该方法不实现移动功能  
  2. - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath*)sourceIndexPath  
  3.       toIndexPath:(NSIndexPath *)destinationIndexPath  
  4. {  
  5.     NSDictionary *item = [dataArr objectAtIndex:sourceIndexPath.row];  
  6.     [dataArr removeObjectAtIndex:sourceIndexPath.row];  
  7.     [dataArr insertObject:item atIndex:destinationIndexPath.row];  
  8. }  

 3.添加单元格。下面是自定义触发事件,即单击左下角的add按钮

Cpp代码  收藏代码
  1. - (IBAction)addistItem:(UIBarButtonItem *)sender {  
  2.     AppUtils *appUtils = [AppUtils alloc];  
  3.     //需要先初始化一个UIAlertView  
  4.     UIAlertView *alert = [UIAlertView alloc];  
  5.     [appUtils showInputDialogWithTitle:@"add" message:@"please input new user name:" toAlertView:alert confirmAction:(^{  
  6.         //得到输入框  
  7.         UITextField *textField=[alert textFieldAtIndex:0];  
  8. //        不要写成NSMutableDictionary *newItem = [NSDictionary dictionary];  
  9.         NSMutableDictionary *newItem = [NSMutableDictionary dictionary];  
  10.         [newItem setObject:textField.text forKey:@"itemName"];  
  11.         [newItem setObject:@"1.jpeg" forKey:@"itemImagePath"];  
  12.         [dataArr addObject:newItem];  
  13.         [self.tableView reloadData];  
  14.     })];  
  15. }  

 4.附上·AppUtils类

Cpp代码  收藏代码
  1. #import "AppUtils.h"  
  2. #include "RIButtonItem.h"  
  3. #include "UIAlertView+Blocks.h"  
  4.   
  5. @implementation AppUtils  
  6.   
  7. //弹出警告框,并实现警告框按钮的触发事件  
  8. - (void)showInputDialogWithTitle:(NSString *)title message:(NSString *)message toAlertView:(UIAlertView*) alert confirmAction:(void(^)(void))action{  
  9.     RIButtonItem* cancelItem = [RIButtonItem item];  
  10.     cancelItem.label = @"No";  
  11.     cancelItem.action = ^  
  12.     {  
  13.         //为NO时的处理  
  14.         UITextField *tf=[alert textFieldAtIndex:0];  
  15.         NSLog(@"UITextField=%@",tf.text);  
  16.     };  
  17.       
  18.     RIButtonItem* confirmItem = [RIButtonItem item];  
  19.     confirmItem.label = @"Yes";  
  20. //    confirmItem.action = action;  
  21.     alert = [alert initWithTitle:title  
  22.                                                     message:message  
  23.                                            cancelButtonItem:cancelItem  
  24.                                            otherButtonItems:confirmItem, nil];  
  25.       
  26.     alert.alertViewStyle = UIAlertViewStylePlainTextInput;  
  27.       
  28.     confirmItem.action = action;  
  29.     [alert show];  
  30. }  
  31. @end  

 

上一篇: ASP.NET MVC 视图(四) 下一篇: 没有下一篇了!
发表评论
用户名: 匿名