ios知识点总结——UITableView的展开与收缩及横向Table

本文详细介绍了在iOS开发中如何实现UITableView的展开与收缩效果,包括自定义扩展UITableView的方法、准备两种不同状态的Cell,以及在ViewController中实现相关UITableViewDataSource和Delegate方法。此外,还提及了实现横向Table的两种方法,包括直接设置tableView和cell的transform属性,以及使用开源库EasyTableView。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

UITableVIew是iOS开发中使用最为广泛的一种控件,对于UITableView的基本用法本文不做探讨,本文主要是针对UITableView的展开与收缩进行阐述,在文章的后面也会探讨一下横向table的用法:

1. UITableView的展开与收缩

 下面通过两幅图来了解UITableView的展开与收缩的效果:


这种展开与收缩的原理其实非常简单,在使用该TableVIew的时候需要准备两个自定义的Cell,一个是未展开情况下的Cell,一个是展开后的Cell,当点击某一行的展开/收缩按钮时,将该行替换为展开/收缩后的Cell,并将其他所有行全部收缩,原理很简单,下面上代码:

(1)扩展UITableView的部分方法:

   创建一个UITableVIew的子类,名称为:ExtensibleTableView

   .h文件中:

@protocol ExtensibleTableViewDelegate <NSObject>

@required

//返回展开之后的cell

- (UITableViewCell *)tableView:(UITableView *)tableView extendedCellForRowAtIndexPath:(NSIndexPath *)indexPath;

//返回展开之后的cell的高度

- (CGFloat)tableView:(UITableView *)tableView extendedHeightForRowAtIndexPath:(NSIndexPath *)indexPath;

@end


@interface ExtensibleTableView : UITableView

{

    //当前被展开的索引

    NSIndexPath *currentIndexPath;

  //  id<ExtensibleTableViewDelegate> delegate_extend;

}

@property(nonatomic,retain)id delegate_extend;

@property(nonatomic,retain)NSIndexPath *currentIndexPath;

//indexPath对应的row展开

- (void)extendCellAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated goToTop:(BOOL)goToTop;

//将展开的cell收起

- (void)shrinkCellWithAnimated:(BOOL)animated;

//查看传来的索引和当前被选中索引是否相同

- (BOOL)isEqualToSelectedIndexPath:(NSIndexPath *)indexPath;

@end




在.m文件中


@implementation ExtensibleTableView

@synthesize delegate_extend;

@synthesize currentIndexPath;

- (id)init

{

    self.currentIndexPath =nil;

    return [superinit];

}

//重写设置代理的方法,使为UITableView设置代理时,将子类的delegate_extend同样设置

- (void)setDelegate:(id<UITableViewDelegate>)delegate

{

    self.delegate_extend = delegate;

    [super setDelegate:delegate];

}


/*

 indexPath对应的row展开

 params:

 animated:是否要动画效果

 goToTop:展开后是否让到被展开的cell滚动到顶部

 */


- (void)extendCellAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated goToTop:(BOOL)goToTop

{      

   

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值