2010-04-24 61 views
3

我在我的UITableView中使用自定义标题视图,但只要我开始向下滚动标题消失,而不是像使用默认标题一样保持原样。而且它不会从屏幕上滚动,只是完全消失。 viewForHeaderInSection仍然被调用,但我的自定义标题视图的drawRect方法不是。我究竟做错了什么?下面是一些代码...viewForHeaderInSection滚动时消失

我的UITableView数据源...

- (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)); 
} 
+0

我发现了一个解决方案,我添加了我的自定义标题视图作为基本UIVIew的子视图(我从viewForHeaderInSection返回),它起到了魅力。似乎有点愚蠢,我的观点(UIVIew分类)不会表现出来。好吧。 – rob5408 2010-04-24 23:37:09

+0

奇数,但它确实有效。 – 2010-11-04 11:53:55

回答

2

我已经在过去有过这个问题,为了避免它,我通常在我的表代理/数据源上创建一个ivar,然后添加一个保留该对象的属性。这样,滚动时对象不会被回收,而且我甚至可以从代码的其他部分访问和更改其值(实际上可能需要根据应用程序进行调整)。这样你就不会放弃子类化和创建自己的头文件的优点。

+0

那是关键!我把它作为*分配* – htafoya 2017-11-06 02:06:36

+0

哦不,我的问题是我使用相同的视图对象,而不是创建一个新的。 – htafoya 2017-11-06 19:09:23