美文网首页
UITableView控件的一些使用技巧

UITableView控件的一些使用技巧

作者: 风往北吹_ | 来源:发表于2015-12-14 10:13 被阅读212次

    前言

    UI界面信息的更新,归根结底是对数据的操作。因此,最正确的姿势应该是:先修改数据源-->后刷新界面;并不是针对某个界面上的控件进行直接赋值或直接修改,这样的操作大部分会造成界面显示混乱的情况。

    Tip1:刷新�操作

    // 这个是在项目中UITableView使用最多的的刷新方式了吧
    - (void)reloadData;
    // 刷新每个分段(或着叫分区/分组)的标题信息
    - (void)reloadSectionIndexTitles;
    
    // 刷新一组数据(一个分区/一个分段)
    - (void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation NS_AVAILABLE_IOS(3_0);
    // 刷新一行数据
    - (void)reloadRowsAtIndexPaths:(NSArray<NSIndexPath *> *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation NS_AVAILABLE_IOS(3_0);
    

    说明:

    1. 对于UITableView的数据刷新Apple提供了这4个接口。针对添加、删除、插入和排序等,在对界面进行相应操作后,这些操作针对操作过的行或组也进行了相应地刷新。因为不属于单纯的刷新,不列入在内。
    2. 对于UITableView的数据操作,大部分的数据都可以放在一个数组中。在对界面的某一行或组进行修改等操作时,最好直接去修改这个数组,然后通过上面提到的四个接口进行刷新。
    3. 针对插入、删除、移动,同样是要修改数组,稍微不同的是,需要重写这些方法,在里面完成对数组的插入、删除和移动等操作。

    简单的代码片段

    /* 声明一个m_listData为UITableView的数据源数组 */
    
    - (void)viewDidLoad {
        [super viewDidLoad];
    
        m_listData = [[NSMutableArray alloc] initWithObjects:@"测试行",@"测试行",@"测试行",@"测试行",@"测试行", nil];
        
        CGRect frame = CGRectMake(0, TopBarHeight, SCREEN_WIDTH, SCREEN_HEIGHT-TopBarHeight);
        _tableView = [[UITableView alloc] initWithFrame:frame style:UITableViewStylePlain];
        _tableView.dataSource = self;
        _tableView.delegate = self;
        _tableView.rowHeight = 60;
        _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
        _tableView.tableFooterView = [[UIView alloc] init];
        [self.view addSubview:_tableView];
        
        [_tableView registerClass:[FHMainViewCell class] forCellReuseIdentifier:FHMainCellID];
        
        UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithTitle:@"刷新" style:UIBarButtonItemStylePlain target:self action:@selector(onTap)];
        self.navigationItem.rightBarButtonItem = item;
    }
    
    
    #pragma mark - UITableViewDataSource
    
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
        
        return m_listData.count;
    }
    
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
        
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:FHMainCellID];
        cell.textLabel.text = m_listData[indexPath.row];
        return cell;
    }
    
    // 刷新操作(在这里修改数组,并进行刷新)
    - (void)onTap {
        [m_listData replaceObjectAtIndex:0 withObject:@"替换的内容"];
        
    // 行刷新
        NSIndexPath *path = [NSIndexPath indexPathForRow:0 inSection:0];
        NSArray *array = @[path];
        [_tableView reloadRowsAtIndexPaths:array withRowAnimation:UITableViewRowAnimationRight];
      
    // 组刷新方式  
    //    NSIndexSet *section = [NSIndexSet indexSetWithIndex:1];
    //    [_tableView reloadSections:section withRowAnimation:UITableViewRowAnimationLeft];
    }
        
    

    Tip2:滚动操作
    // 有时间了再更新
    Tip3:编辑操作
    // 有时间了再更新

    相关文章

      网友评论

          本文标题:UITableView控件的一些使用技巧

          本文链接:https://www.haomeiwen.com/subject/umkuhttx.html