iOS UITableView動態隱藏或顯示Item


通過改變要隱藏的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博客園看到本文,請點擊查看原文.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM