`

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

 
阅读更多



 

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



 
 

- (void)viewDidLoad
{
    [super viewDidLoad];
    //设置导航栏
     self.editButtonItem.title = @"编辑";
    self.navigation.rightBarButtonItem = self.editButtonItem;
    [self initTableViewData];
	// Do any additional setup after loading the view.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

-(void)initTableViewData{
    NSBundle *bundle = [NSBundle mainBundle];
    NSString *plistPath = [bundle pathForResource:@"user_head" ofType:@"plist"];
    dataArr = [[NSMutableArray alloc] initWithContentsOfFile:plistPath];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [dataArr count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"tableCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    
    NSUInteger row = [indexPath row];
    NSDictionary *rowDict = [dataArr objectAtIndex:row];
    cell.textLabel.text =  [rowDict objectForKey:@"itemName"];
    NSLog(@"cell.label.text =  %@",[rowDict objectForKey:@"itemName"]);
    
    NSString *imagePath = [rowDict objectForKey:@"itemImagePath"];
    cell.imageView.image = [UIImage imageNamed:imagePath];
    NSLog(@"cell.image.image  =  %@",imagePath);
    
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    
    return cell;
}

//选中Cell响应事件
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];//选中后的反显颜色即刻消失
    NSUInteger row = [indexPath row];
    NSDictionary *rowDict = [dataArr objectAtIndex:row];
    NSString *userName =  [rowDict objectForKey:@"itemName"];
    NSLog(@"userName=%@",userName);
}

//返回编辑状态的style
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView
           editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
    //UITableViewCellEditingStyleInsert
//    return UITableViewCellEditingStyleNone;
    return UITableViewCellEditingStyleDelete;
}
//完成编辑的触发事件
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle
forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete)
    {
        [dataArr removeObjectAtIndex: indexPath.row];
        //        [tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
        //                         withRowAnimation:UITableViewRowAnimationFade];
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
                         withRowAnimation:UITableViewRowAnimationFade];
        [tableView reloadData];
    } 
}
//UIViewController生命周期方法,用于响应视图编辑状态变化
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
    [super setEditing:editing animated:animated];
    
    [self.tableView setEditing:editing animated:YES];
    if (self.editing) {
     self.editButtonItem.title = @"完成";
    } else {
        self.editButtonItem.title = @"编辑";
    }
}
@end

 2.移动单元格



 

//完成移动的触发事件,不添加该方法不实现移动功能
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath*)sourceIndexPath
      toIndexPath:(NSIndexPath *)destinationIndexPath
{
    NSDictionary *item = [dataArr objectAtIndex:sourceIndexPath.row];
    [dataArr removeObjectAtIndex:sourceIndexPath.row];
    [dataArr insertObject:item atIndex:destinationIndexPath.row];
}

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

- (IBAction)addistItem:(UIBarButtonItem *)sender {
    AppUtils *appUtils = [AppUtils alloc];
    //需要先初始化一个UIAlertView
    UIAlertView *alert = [UIAlertView alloc];
    [appUtils showInputDialogWithTitle:@"add" message:@"please input new user name:" toAlertView:alert confirmAction:(^{
        //得到输入框
        UITextField *textField=[alert textFieldAtIndex:0];
//        不要写成NSMutableDictionary *newItem = [NSDictionary dictionary];
        NSMutableDictionary *newItem = [NSMutableDictionary dictionary];
        [newItem setObject:textField.text forKey:@"itemName"];
        [newItem setObject:@"1.jpeg" forKey:@"itemImagePath"];
        [dataArr addObject:newItem];
        [self.tableView reloadData];
    })];
}

 4.附上·AppUtils类

#import "AppUtils.h"
#include "RIButtonItem.h"
#include "UIAlertView+Blocks.h"

@implementation AppUtils

//弹出警告框,并实现警告框按钮的触发事件
- (void)showInputDialogWithTitle:(NSString *)title message:(NSString *)message toAlertView:(UIAlertView*) alert confirmAction:(void(^)(void))action{
    RIButtonItem* cancelItem = [RIButtonItem item];
    cancelItem.label = @"No";
    cancelItem.action = ^
    {
        //为NO时的处理
        UITextField *tf=[alert textFieldAtIndex:0];
        NSLog(@"UITextField=%@",tf.text);
    };
    
    RIButtonItem* confirmItem = [RIButtonItem item];
    confirmItem.label = @"Yes";
//    confirmItem.action = action;
    alert = [alert initWithTitle:title
                                                    message:message
                                           cancelButtonItem:cancelItem
                                           otherButtonItems:confirmItem, nil];
    
    alert.alertViewStyle = UIAlertViewStylePlainTextInput;
    
    confirmItem.action = action;
    [alert show];
}
@end

 

 

 

  • 大小: 50.3 KB
  • 大小: 42.8 KB
  • 大小: 36.3 KB
  • 大小: 95.1 KB
分享到:
评论

相关推荐

    移动软件开发-3期(KC015) 表视图 教学设计.doc

    7. **单元格操作**:表视图支持单元格的插入、删除和移动,这涉及到数据源协议中的相应方法,以及更新界面的逻辑。 8. **分页与下拉刷新**:表视图可实现分页加载更多数据,以及下拉刷新最新内容的功能,这些都是...

    IOS应用源码Demo-宫格视图(支持横屏)LOGO-毕设学习.zip

    2. UICollectionView:iOS中的UICollectionView是实现宫格视图的主要工具,它可以灵活地展示多个单元格,每个单元格可以自定义显示内容。 3. 自适应布局(Auto Layout):由于宫格视图需要支持横屏模式,所以必须...

    IOS应用源码——表格视图.zip

    10. **动画效果**:UITableView支持多种动画效果,如插入、删除、移动行等,这些可以通过调用`beginUpdates` 和 `endUpdates` 方法,配合相应的插入和删除方法实现。 11. **刷新控制**:`UIRefreshControl` 是一个...

    ios-简单的分区折叠和单元格折叠.zip

    同时,考虑使用NSFetchedResultsController如果数据源是Core Data,它能自动处理插入、删除和移动操作。 7. **代码实现**:文件中的UITableViewDemoZhanKai很可能是实现这个功能的示例代码。通过查看并理解这段代码...

    集合视图布局是一组用于iOS的自定义流布局,它模仿移动应用程序的通用数据网格方法.zip

    4. **动画效果**:可能包含各种内置的动画效果,如插入、删除、移动项目的平滑过渡,使界面更加生动。 5. **自定义代理和协议**:开发者可以通过遵循特定的代理协议来控制布局的行为,如决定每个单元格的大小、间距...

    《iOS6开发指南》精彩书摘

    还包括表视图单元格的删除、插入、移动等操作和UI设计模式。 5. **视图控制器与导航模式**:讨论了应用是否需要导航功能,以及选择平铺导航、标签导航、树形结构导航或它们的综合使用。 6. **iPhone与iPad应用开发...

    ios-列表swift版.zip

    8. **UITableViewRowAnimation**: 这个枚举定义了单元格插入、删除和移动时的各种动画效果。 9. **reloadData()方法**: 重新加载整个表格数据,通常在数据改变后调用。 10. **didSelectRowAt方法**: 代理方法,当...

    ios-ExcelView.zip

    在iOS开发中,"表格视图"是一种常用的数据展示方式,它允许用户以清晰、有组织的形式查看和交互大量信息。这个"ios-ExcelView.zip"文件可能包含了一个实现类似Excel表格功能的自定义视图组件,使得开发者可以将数据...

    IOS应用源码之Collection View for iOS.rar

    6. **插入、删除和移动单元格**:可以通过数据源的方法`insertItems(at:)`、`deleteItems(at:)`和`moveItem(at:to:)`来动态更新界面。 7. **性能优化**:通过复用机制,只渲染可视区域内的单元格。另外,使用`...

    单元格的操作.

    例如,通过`UITableViewRowAnimation`枚举,可以控制单元格插入、删除或移动时的动画效果。 总之,单元格的操作是`tableView`编程的核心,理解和掌握这些知识点对于构建功能丰富的数据展示界面至关重要。通过灵活...

    iOS UICollectionView 不规则排序

    8. **动画效果**:通过实现`prepareForAnimation`和`finalizeCollectionViewUpdates`方法,可以自定义单元格的动画效果,如插入、删除和移动。 9. **调试与测试**:使用Xcode的Auto Layout Debugging工具,如...

    iOS UITableView的简单Demo

    - 使用`beginUpdates`和`endUpdates`可以实现更复杂的动画效果,如插入、删除或移动行。 4. 事件处理: - 要监听用户对表格的操作,如点击行,需实现UITableViewDelegate协议,特别是`tableView:...

    iOS 流布局教学代码

    - UICollectionView支持动画更新,例如插入、删除、移动单元格。同时,通过复用机制提高性能,减少内存占用和渲染时间。 7. **自定义交互** - 通过 `- collectionView(_:didSelectItemAt:)` 实现点击事件响应。 ...

    swift-iOSCell拖拽排序

    "swift-iOSCell拖拽排序"这个主题就是关于如何在Swift中为UITableView或UICollectionView实现类似今日头条和网易新闻那样,用户可以通过拖动单元格进行内容排序的功能。这种功能极大地提升了用户的操作便捷性和体验...

    UItableview cell (自定义)增假,删除 移动

    在实际应用中,我们经常需要对UITableView中的Cell进行自定义,以满足各种复杂的需求,如添加、删除和移动单元格。这个主题主要涵盖以下几个方面: 1. **自定义UITableViewCell** 自定义UITableViewCell主要是为了...

    UITableView编辑-右划插入和左划删除、置顶、标记.zip

    置顶功能通常用于将某个单元格移动到列表顶部。这需要在数据源中对数据进行排序,将置顶的项目放在首位,然后调用`reloadData()`刷新表格视图。你还可以为用户提供一个按钮或手势,触发置顶操作。 4. 标记: 标记...

    iOS基础——通过案例学知识之UITableView

    8. 动画效果:UITableView提供了多种动画效果,如插入、删除、移动行等,可以通过DataSource的相关方法实现。 9. Section和Header/Footer:UITableView不仅可以分组显示数据,还可以添加头部和尾部视图,通过`...

    Beginning iOS 5 Development: Exploring the iOS SDK [Paperback]

    - **历史**:自2007年首次推出以来,iOS已成为全球最受欢迎的移动操作系统之一。 - **iOS 5新特性**:引入了通知中心、iMessage等新功能,同时改进了开发工具,提升了开发效率。 #### 2. 开发环境搭建 - **Xcode...

    ios-swift-使用表格组件(UITableView)实现分组列表.zip

    可以通过修改`UITableViewRowAnimation`枚举值来实现单元格插入、删除和移动的动画效果。 9. **单元格高度**: 如果需要动态计算单元格的高度,可以实现`tableView(_:estimatedHeightForRowAt:)`和`tableView(_:...

Global site tag (gtag.js) - Google Analytics