美文网首页
iOS tableView重用思考

iOS tableView重用思考

作者: 程序猿马国玺 | 来源:发表于2017-09-05 11:56 被阅读19次
//供应商视图
    NSString * low_url = [item objectForKeyNotNull:@"low_url"];
    if (!low_url||low_url.length == 0)
    {
        self.shopView.hidden = YES;
    }
    else
    {
        //一些其他设置
    }

错误思路:视图默认显示,需要隐藏就隐藏。
错误分析:根据传进来的数据是否有供应商而显示供应商视图,在第一页数据中是有供应商的,默认显示供应商,没什么问题hidden = no,不需要设置。在第二页的数据中没有供应商,所以不显示供应商hidden = yes;之后再返回第一页的时候,cell是从重用池中取的,之前是什么状态就是什么状态,供应商视图会保留第二页的设置,hidden = yes不显示,这样一来本来第一页该显示供应商视图但是却被隐藏了。
所以正确的写法应该是下面这样

//供应商视图
    NSString * low_url = [item objectForKeyNotNull:@"low_url"];
    if (!low_url||low_url.length == 0)
    {
        self.shopView.hidden = YES;
    }
    else
    {
        self.shopView.hidden = NO;
        //一些其他设置
    }
if (self.showReportButton) {
        self.reportButton.hidden = NO;
    }
    else
    {
        self.reportButton.hidden = YES;
    }

这次思路没有错,有隐藏有显示,但是还是出现了视图错乱的问题。
其实经过思考,这个错误原因与上面是类似的,表面看起来是有隐藏有显示,问题出在了showReportButton这个变量上了,布尔值默认为no,所以我只在需要显示的时候设置了showReportButton为yes。

cell.showReportButton = YES;

无论是变量还是视图,从重用池中取出来的都会保留之前的状态。
所以在不需要显示视图的cell中也要加上一句代码

cell.showReportButton = NO;

原理相同,只是在不同的地方。

相关文章

  • iOS tableView重用思考

    错误思路:视图默认显示,需要隐藏就隐藏。错误分析:根据传进来的数据是否有供应商而显示供应商视图,在第一页数据中是有...

  • UI视图

    UItableView 重用机制 一般在iOS中,tableview的重用机制,我们在- (UITableView...

  • UITableViewCell的重用机制理解

    不说废话,先上代码 这里就涉及了TableView的重用机制,为了做到显示和数据分离,IOS tableView的...

  • tableviewcell滑动重用

    ios tableView那些事 (十六) UITableView中Cell重用机制导致内容重复解决方法 ios之...

  • iOS cell重用问题

    在做iOS 开发的最常用到的就是tableview,因此最常见的也就是tableview 的重用问题,这次我来介绍...

  • iOS-UITableviewCell的重用机制

    TableView的重用机制,为了做到显示和数据分离,iOS tableView的实现并且不是为每个数据项创建一个...

  • ios-UItableviewCell重用机制

    TableView的重用机制,为了做到显示和数据分离,IOS tableView的实现并且不是为每个数据项创建一个...

  • iOS-UITableviewCell的重用机制

    TableView的重用机制,为了做到显示和数据分离,IOS tableView的实现并且不是为每个数据项创建一个...

  • iOS-UITableviewCell的重用机制

    TableView的重用机制,为了做到显示和数据分离,IOS tableView的实现并且不是为每个数据项创建一个...

  • iOS TableView的重用机制

    今天测试反馈了一个问题,有一个列表每次下啦刷新内存都在持续增加,最后因为OOM崩溃了。这个页面是个双层的Table...

网友评论

      本文标题:iOS tableView重用思考

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