代码之家  ›  专栏  ›  技术社区  ›  rob5408

滚动时viewForHeaderInSection将消失

  •  3
  • rob5408  · 技术社区  · 14 年前

    我在我的UITableView中使用了一个自定义的header视图,但是当我开始向下滚动时,header就消失了,而不是像默认的headers那样停留在原地。而且它也没有在屏幕上滚动,只是完全令人失望。viewForHeaderInSection仍在被调用,但自定义header视图的drawRect方法没有被调用。我做错了什么?这里有一些代码。。。

    - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
    {   
        HeaderView* headerView = [[[HeaderView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 40.0f)] autorelease];
        return headerView;
    }
    

    …和我的自定义标题。。。

    -(void)drawRect:(CGRect)rect
    {
        CGContextRef context = UIGraphicsGetCurrentContext();
        CGContextSetRGBFillColor(context, 115.0f, 125.0f, 133.0f, 0.5f);
        CGContextFillRect(context, CGRectMake(0.0f, 0.0f, 320.0f, 40.0f));
    }
    
    1 回复  |  直到 9 年前
        1
  •  2
  •   Adrian Kosmaczewski    13 年前

    我以前也遇到过这个问题,为了避免这个问题,我通常在表delegate/datasource上创建一个ivar,然后添加一个保留对象的属性。这样,对象在以后滚动时不会被回收,我甚至可以从代码的其他部分访问和更改它的值(根据应用程序的不同,这实际上可能是必需的)。这样就不会放弃子类化和创建自己的头的优势。