`
jsntghf
  • 浏览: 2527510 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

TableView中的Move操作

    博客分类:
  • iOS
阅读更多

需要实现UITableViewDelegate接口中的tableView:editingStyleForRowAtIndexPath:方法以及UITableViewDataSource接口中的tableView:canMoveRowAtIndexPath:方法和
tableView:moveRowAtIndexPath:toIndexPath:方法。

 

#pragma mark -
#pragma mark Table view delegate Methods
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView 
           editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
    return UITableViewCellEditingStyleNone;
}

#pragma mark -
#pragma mark Table view data source Methods
- (BOOL)tableView:(UITableView *)tableView 
canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
    return YES;
}

- (void)tableView:(UITableView *)tableView 
moveRowAtIndexPath:(NSIndexPath *)fromIndexPath 
      toIndexPath:(NSIndexPath *)toIndexPath {
    NSUInteger fromRow = [fromIndexPath row];
    NSUInteger toRow = [toIndexPath row];
    
    id object = [[list objectAtIndex:fromRow] retain];
    [list removeObjectAtIndex:fromRow];
    [list insertObject:object atIndex:toRow];
    [object release];
}

 

然后在导航上加上操作按钮:

 

UIBarButtonItem *editButton = [[UIBarButtonItem alloc]
                                   initWithTitle:@"Move"
                                   style:UIBarButtonItemStyleBordered
                                   target:self
                                   action:@selector(toggleEdit:)];
    self.navigationItem.rightBarButtonItem = editButton;
    [editButton release];

 

最后,实现toggleEdit:方法即可:

 

- (IBAction)toggleEdit:(id)sender {
    [self.tableView setEditing:!self.tableView.editing animated:YES];
    
    if (self.tableView.editing)
        [self.navigationItem.rightBarButtonItem setTitle:@"Done"];
    else
        [self.navigationItem.rightBarButtonItem setTitle:@"Move"];
}

 

分享到:
评论

相关推荐

    tableView move

    7. **错误处理**:在处理用户交互时,应考虑各种异常情况,例如非法的移动操作(如尝试将行移动到不存在的位置)以及在多线程环境中更新数据源时可能出现的问题。 通过以上步骤,你就可以实现一个自定义的、可拖动...

    ios-Move-Delete-Insert-TableView.zip

    这个名为“ios-Move-Delete-Insert-TableView.zip”的资源包显然包含了关于如何在UITableView中实现添加、删除和移动表格行的教程或代码示例。在iOS应用中,这种功能通常是用户交互的核心部分,使得用户能够管理和...

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

    Swift中的UITableView支持两种编辑模式:普通编辑模式(normal editing mode)和移动编辑模式(move editing mode)。在普通编辑模式下,用户可以通过左滑单元格进行删除操作;在移动编辑模式下,用户可以拖动单元格...

    UITableView 系列四 :项目中行的操作 (添加移动和删除)(实例)

    在本教程中,我们将深入探讨UITableView的系列知识,特别是如何在实际项目中实现行的添加、移动和删除操作。这些功能是用户交互的重要组成部分,使应用程序更加动态和用户友好。 首先,我们需要理解UITableView的...

    TableView全面解析案例

    首先,`刷新行`(Reload Rows)是UITableView中最基本的操作之一,当我们需要更新特定行的数据时,可以调用`reloadRowsAtIndexPaths:withRowAnimation:`方法。此方法接受一个NSIndexPath数组,表示需要刷新的行,...

    iOS-多媒体-转场动画-TableVew缩略图的转场动画-16Hero3-swiftui

    在我们的"16Hero3"示例中,我们将在TableView中展示一组缩略图,并当用户点击时,通过Hero动画扩展成全屏视图。 实现这个功能的第一步是定义你的数据模型。这通常包括每个缩略图的图片URL、标题等信息。你需要创建...

    UITableView2 Demo代码

    4. 实现UITableViewDataSource方法,如`numberOfSections(in:)`、`tableView(_:numberOfRowsInSection:)`和`tableView(_:cellForRowAt:)`,在`cellForRowAt:`中初始化并设置每个Cell的UI元素和附属视图。 5. 调整...

    编辑表格示例

    2. **处理移动操作**:在`tableView(_:commit:forRowAt:)`中,当编辑类型为 `.move` 时,需要获取新的indexPath(拖动后的位置)和旧的indexPath(拖动前的位置),然后根据这两个索引对数据模型进行相应的调整。...

    仿QQ消息列表(ListView)滑动删除效果源码

    - 在ACTION_MOVE事件中,计算手指移动的偏移量,以确定是否达到触发滑动删除的阈值。 3. **动画效果**: - 当滑动检测通过后,需要为被滑动的条目添加一个动画效果,通常是让条目向侧边滑出。可以使用`...

    android中拖动ListItem的源代码。

    拖动ListItem是ListView的一个高级特性,常用于实现类似iOS中的TableView的交互效果,让用户可以自由调整列表项的顺序。本文将深入探讨如何在Android中实现拖动ListView的ListItem,并基于提供的"DragListView"源...

    高仿QQ滑动删除

    例如,设置`tableView.allowsMultipleSwipe`为`NO`,防止同时进行多个滑动操作。 最后,动画效果也是滑动删除体验的重要组成部分。在Android和iOS中,我们可以利用系统提供的动画API(如`ObjectAnimator`或`...

    Example.zip

    在cxGrid中,TableView是一种常见的视图类型,用于显示行列结构的数据。 实现cxGridTableView行的拖放功能涉及以下几个关键知识点: 1. **Drag and Drop机制**:Delphi提供了一个内置的DragDrop机制,允许用户通过...

    cocos2d-x 滚动字幕和公告

    在cocos2d-x中,可以使用Label类来创建文字对象,并结合动作类(如MoveBy、MoveTo)来实现滚动效果。首先,创建一个Label对象,设置好字体、颜色和文本内容,然后应用一个持续时间足够长的动作,使得文字能在整个...

Global site tag (gtag.js) - Google Analytics