`

UITableView中Cell的操作

    博客分类:
  • ios
 
阅读更多
Table View的简单使用 这篇,这里主要讲UITableView 中的Cell的操作,包括标记、移动、删除、插入。

为了简单快捷,直接从原来那篇的代码开始.

要进行数据的操作了,把代码里的不可变数组改成可变的:

NSArray *list -》NSMutableArray *list




1、标记Cell。

[img]

[/img]



打开项目,

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath。

添加代码
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
//    NSString *rowString = [self.list objectAtIndex:[indexPath row]];
//    UIAlertView * alter = [[UIAlertView alloc] initWithTitle:@"选中的行信息" message:rowString delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
//    [alter show];
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    if (cell.accessoryType == UITableViewCellAccessoryNone) {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    }else {
        cell.accessoryType = UITableViewCellAccessoryNone;
    }
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
}


标记分别有四种效果:

UITableViewCellAccessoryCheckmark
UITableViewCellAccessoryDetailDisclosureButton
UITableViewCellAccessoryDisclosureIndicator
UITableViewCellAccessoryNone




2、删除Cell

想要实现移动或者删除行这样的操作,需要启动表格的编辑模式。使用的是setEditing:animated:方法。

打开xib,生成Table的IBoutlet映射  tableView;

在viewDidload里添加

    [self.tableViewsetEditing:YES];

这是启动运行程序,

[img]

[/img]

打开可编辑模式,默认情况显示删除的图标的。

实现删除的代码:
- (void)tableView:(UITableView *)tableView commitEditingStyle:
(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    NSUInteger row = [indexPath row];
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        [self.list removeObjectAtIndex:row]; 
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
                         withRowAnimation:UITableViewRowAnimationAutomatic]; 
    }
}



这个方法根据参数editingStyle是UITableViewCellEditingStyleDelete

在这删除行的方法又出现了一个常量:UITableViewRowAnimationAutomatic,它表示删除时的效果,类似的常量还有:
UITableViewRowAnimationAutomatic
UITableViewRowAnimationTop
UITableViewRowAnimationBottom
UITableViewRowAnimationLeft
UITableViewRowAnimationRight
UITableViewRowAnimationMiddle
UITableViewRowAnimationFade
UITableViewRowAnimationNone

从常量名称打开可以看出效果来。

这是运行,就可以删除其中的一个Cell行了。





3、移动Cell

添加代码如下:

3.1先把默认的删除的图标去掉
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView
           editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { 
    return UITableViewCellEditingStyleInsert; 
}


3.2返回当前Cell是否可以移动
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath { 
    return YES; 
}


3.3执行移动操作
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)
sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath {
    NSUInteger fromRow = [sourceIndexPath row]; 
    NSUInteger toRow = [destinationIndexPath row]; 
    
    id object = [self.list objectAtIndex:fromRow]; 
    [self.list removeObjectAtIndex:fromRow]; 
    [self.list insertObject:object atIndex:toRow]; 
}



运行程序

[img]

[/img]

怎么移动呢?不要以为按住行的任何地方都能移动,要按住最左边的三道杠的图标才能拖动移动





4、插入cell:

4.1插入和删除差不多,在

- (void)tableView:(UITableView *)tableView commitEditingStyle:

(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

添加UITableViewCellEditingStyleInsert判断
- (void)tableView:(UITableView *)tableView commitEditingStyle:
(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    NSUInteger row = [indexPath row];
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        [self.list removeObjectAtIndex:row]; 
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
                         withRowAnimation:UITableViewRowAnimationAutomatic]; 
    }else if(editingStyle == UITableViewCellEditingStyleInsert ){
        NSArray *insertIndexPaths = [NSArray arrayWithObjects:indexPath,nil];
        [self.list insertObject:@"inset new Cell" atIndex:row];
        [tableView insertRowsAtIndexPaths:insertIndexPaths withRowAnimation:UITableViewRowAnimationMiddle];
    }
}




4.2 修改图标为插入样式。
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView
           editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { 
    return UITableViewCellEditingStyleInsert; 
}



运行,点加号图标,
[img]

[/img]



  • 大小: 37.2 KB
  • 大小: 54.6 KB
  • 大小: 29.2 KB
  • 大小: 62.1 KB
分享到:
评论

相关推荐

    swift中UITableView自定义cell添加与删除及表的刷新wift中UITableView自定义cell添加与删除及表的刷新

    以上就是在Swift中自定义UITableView的Cell,以及处理数据的添加、删除和刷新的基本操作。这只是一个基础的指南,实际项目中可能需要考虑更多细节,如动画效果、异步数据加载、错误处理等。通过不断地实践和学习,你...

    UItableView多cell实现

    5. 在`tableView(_:cellForRowAt:)`中,通过父类指针操作子类cell,这样可以在父类中处理一些共有的逻辑,而不需要在每个子类中重复实现。 通过这样的设计,我们不仅能够保持代码的整洁,还能减少冗余,提高代码的...

    UITableView在两个Cell中间显示目录效果

    通过以上步骤,我们就可以在UITableView中实现目录效果,使得用户可以方便地在列表中浏览和操作。这个功能增加了交互性,提高了用户体验,对于那些包含复杂结构或多层次信息的App来说尤其有用。在实际开发中,可以...

    UITableView 删除单元格Cell Demo代码

    在实际应用中,我们经常需要实现对UITableView中的单元格(Cell)进行删除操作。本Demo代码着重展示了如何在UITableView中删除Cell,让我们来详细探讨这个过程。 首先,为了删除单元格,我们需要遵循...

    ios-UITableView 相邻cell交换简单动画.zip

    在iOS开发中,UITableView是展示数据列表常用的控件,它允许用户进行滚动和交互操作。在某些场景下,我们可能需要实现自定义的动画效果,比如相邻cell的交换。这个"ios-UITableView 相邻cell交换简单动画.zip"项目...

    UITableView自定义Cell-SB.zip

    当我们需要对UITableView的显示效果进行个性化定制时,通常会涉及到自定义Cell的操作。本项目"UITableView自定义Cell-SB.zip"显然是一个关于如何在Storyboard中创建自定义Cell,并结合Model数据模型进行使用的教程。...

    ios-UITableView的cell移动位置.zip

    这个场景在"ios-UITableView的cell移动位置.zip"的示例中得到了体现。在描述中提到,当用户拖动cell后,再次进入界面时,cell仍保持在拖动后的位置,这涉及到UITableView的数据源管理以及状态保存。 首先,我们要...

    UITableView Cell操作

    本文将深入探讨UITableView中的Cell操作,包括增删插入和移动等操作。 首先,我们需要理解UITableView的基本结构。UITableView由多个UITableViewCell组成,每个Cell对应数据源中的一个条目。我们可以通过实现...

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

    要在UITableView中增加Cell,你需要操作数据源(通常是数组),然后调用`reloadData`方法更新表格。例如,当用户点击“添加”按钮时,可以在数据源中添加新的数据对象,然后通过`insertRows(at:with:)`方法插入对应...

    iOS-UITableview 的cell边线阴影

    在iOS开发中,`UITableView`是用于展示列表数据的核心组件,而给`UITableViewCell`添加边线阴影以及渐变效果能够提升界面的视觉层次感和用户体验。这篇内容将深入讲解如何实现`UITableView`的cell边线阴影及渐变设计...

    ios UITableView cell侧滑

    在iOS开发中,UITableView是展示数据列表常用的控件,而为UITableView的Cell添加侧滑功能可以为用户提供便捷的操作选项,比如删除、编辑等。本文将详细介绍如何实现“ios UITableView cell侧滑”这一功能,以及如何...

    在UITableView中自定义UITableViewcell实现ibooks图书列表样式

    8. **事件处理**:如果需要Cell被点击后执行某些操作,比如跳转到详情页面,可以实现UITableViewDelegate的`- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath`方法,...

    ios-长按即可移动cell的自定义UITableView.zip

    本示例“ios-长按即可移动cell的自定义UITableView”提供了一种创新的交互方式,允许用户通过长按来移动表格中的单元格(cell),提升用户体验。该功能通常在需要用户重新排序列表项的应用场景中非常实用,例如待办...

    ios-iOS UITableView获取特定位置的cell.zip

    总的来说,掌握如何在UITableView中获取和操作特定位置的cell是iOS开发中的基本技能。这涉及到正确实现UITableViewDataSource和UITableViewDelegate协议,以及理解如何使用IndexPath来定位cell。通过提供的zip文件,...

    ios uitableview cell的展开收缩功能

    以上就是关于"ios uitableview cell的展开收缩功能"的知识点详解,涵盖从数据源设计、界面定制到实际操作的完整流程。在实际开发中,这个功能可以根据需求进行各种定制,以适应不同场景下的用户体验需求。

    自定义UITableViewCell

    在iOS开发中,UITableView是展示数据的常用控件,它的工作原理是通过重用Cell来提高性能。然而,系统默认的UITableViewCell样式有限,为了满足更丰富的界面设计需求,开发者经常需要自定义UITableViewCell。本主题将...

    iOS关于在UITableView中,实现多个cell中不同的倒计时实现1

    在iOS开发中,实现UITableView中每个cell具有不同的倒计时是一项常见的需求。在这个场景中,我们需要处理的关键点是如何高效地管理多个倒计时并确保在界面更新时的正确性。以下是一个具体的实现策略: 首先,我们...

    TableView自定义Cell折叠效果

    在UITableView中,每个Cell都是独立的,可以通过重写`UITableViewDataSource`的相关方法来决定Cell的显示内容和数量。要实现折叠效果,我们需要添加一个开关(如UIButton或UISwitch)到Cell中,当用户触发这个开关时...

    UITableView与UITableViewCell

    最后,UITableView支持多种自定义功能,包括但不限于:自定义单元格的外观,设置行高,实现滑动操作,添加头尾视图,以及使用异步加载优化性能。在实际开发中,灵活运用这些特性可以构建出丰富多样的用户界面。 ...

    swift-UICollectionViewCell的移动和移动

    在UICollectionView中,移动一个单元格涉及到两个主要步骤:捕获用户的拖动操作和处理单元格的重排。Swift中的UICollectionView提供了相应的API来支持这一过程。 1. 实现UICollectionViewDelegateFlowLayout协议 ...

Global site tag (gtag.js) - Google Analytics