• UITableView 滚动时使用reloaddata出现 crash'-[__NSCFArray objectAtIndex:]: index (1) beyond bounds (0)' Crash


    例子:

    - (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    static NSString *CellIndentifier = @"Account";
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIndentifier];
        
        //adjust the height for cell
        CGRect cellFrame = [cell frame];
        cellFrame.size.height = self.bgImageView.frame.size.height/2;
        
        //first time load the content
        if (cell == nil) {
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIndentifier] autorelease];
        
        。。。。。。。。。

    else

      //这里主要是为了在滚动屏幕时候解决屏幕内容显示错误。但是却引发了这个问题,操作为向一个方向快速反复滚动就很容易crash,应该是reload后因为使用了dequeueReusableCellWithIdentifier导致table

    无法得到正确的应当显示的cell内容和个数,导致出错。

        [viewtable  reloadData];

    解决方法:

    static NSString *CellIndentifier = @"Account";
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIndentifier];
        
        //adjust the height for cell
        CGRect cellFrame = [cell frame];
        cellFrame.size.height = self.bgImageView.frame.size.height/2;
        
        //first time load the content
        if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIndentifier] autorelease];
        
    //创建所有的子视图

    }else

    {

    //移除所有的子视图

     while ([cell.contentView.subviews lastObject] != nil)
                    {
                        [(UIView*)[cell.contentView.subviews lastObject] removeFromSuperview];
                    }
    //重新添加子视图
     

    }

    这样做的效果上看不会因为删除子视图然后出现空白等待加载的不良效果

  • 相关阅读:
    让linux用户隶属于多个组
    ldd 的介绍
    全栈博客开发(三)完善项目并容器化
    C++ 迭代器
    C++ vector类
    C++输入输出流和变量
    C++ vscode搭建windows C++开发环境
    全栈博客开发(二)添加渲染
    C++ string类
    全栈博客开发(一)服务结构
  • 原文地址:https://www.cnblogs.com/lisa090818/p/3388165.html
Copyright © 2020-2023  润新知