首页 > 学院 > 开发设计 > 正文

iOSUITableView动态隐藏或显示Item

2019-11-14 18:43:49
字体:
来源:转载
供稿:网友

通过改变要隐藏的item的高度实现隐藏和显示item

 

1.创建UITableView

#import "ViewController.h"@interface ViewController ()@PRoperty(nonatomic, strong)UITableView *tableView;@property(nonatomic, assign)BOOL isHiddenItem;@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    self.isHiddenItem = NO;    self.tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];    self.tableView.delegate = self;    self.tableView.dataSource = self;    [self.view addSubview:self.tableView];}

 

2.UITableView delegate, 具体的实现方法都已经加了注释

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {    // 把要隐藏的item的高度设置为0    if (indexPath.row == 2 && self.isHiddenItem) {        return 0;    }    return 100;}-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {    return 5;}-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];    if (cell == nil) {        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];    }    if (indexPath.row == 0) {        cell.textLabel.text = @"点击0行的时候隐藏第2行";    } else if(indexPath.row ==1) {        cell.textLabel.text = @"点击1行的时候显示第2行";    } else {        cell.textLabel.text = [NSString stringWithFormat:@"当前行数%ld",indexPath.row];    }    return cell;}- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {    if (indexPath.row == 0) {        // 标示是否被隐藏        self.isHiddenItem = YES;                // 获取要隐藏item的位置        NSIndexPath *tmpPath = [NSIndexPath indexPathForRow:indexPath.row + 2 inSection:indexPath.section];        [UIView animateWithDuration:0.3 animations:^{            [self.tableView cellForRowAtIndexPath:tmpPath].alpha = 0.0f;        } completion:^(BOOL finished) {            // 隐藏的对应item            [[self.tableView cellForRowAtIndexPath:tmpPath] setHidden:YES];            // 刷新被隐藏的item            [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:tmpPath] withRowAnimation:UITableViewRowAnimationFade];        }];        NSLog(@"点击了第0行");    } else if (indexPath.row == 1){                self.isHiddenItem = NO;                NSIndexPath *tmpPath = [NSIndexPath indexPathForRow:indexPath.row + 2 inSection:indexPath.section];                [UIView animateWithDuration:0.3 animations:^{            [self.tableView cellForRowAtIndexPath:tmpPath].alpha = 1.0f;        } completion:^(BOOL finished) {            [[self.tableView cellForRowAtIndexPath:tmpPath] setHidden:YES];            [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:tmpPath] withRowAnimation:UITableViewRowAnimationFade];        }];        NSLog(@"点击了第1行");    }}

 

3.效果

 

如果你不是在wb145230博客园看到本文,请点击查看原文.


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表