滚动时 viewForHeaderInSection 消失
Posted
技术标签:
【中文标题】滚动时 viewForHeaderInSection 消失【英文标题】:viewForHeaderInSection disappears when scrolling 【发布时间】:2010-04-24 21:22:34 【问题描述】:我在 UITableView 中使用了自定义标题视图,但是一旦我开始向下滚动标题就会消失,而不是像默认标题那样保持原位。它也没有滚出屏幕,只是完全消失了。 viewForHeaderInSection 仍在被调用,但我的自定义标题视图的 drawRect 方法不是。我究竟做错了什么?这是一些代码...
我的 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));
【问题讨论】:
我找到了一个解决方案,我将自定义标题视图添加为基本 UIVIew 的子视图(我从 viewForHeaderInSection 返回),它很有魅力。我的视图(UIVIew 的子类)不起作用,这似乎有点愚蠢。哦,好吧。 奇怪,但确实可以解决问题。 【参考方案1】:我过去曾遇到过这个问题,为了避免它,我通常在我的表委托/数据源上创建一个 ivar,然后我添加一个将对象保留在适当位置的属性。这样,以后滚动时不会回收该对象,我什至可以从代码的其他部分访问和更改其值(这实际上可能需要取决于应用程序)。这样您就不会放弃子类化和创建自己的标头的优势。
【讨论】:
这是关键!我把它当作 assign 哦不,我的问题是我使用的是同一个视图对象而不是创建一个新对象。以上是关于滚动时 viewForHeaderInSection 消失的主要内容,如果未能解决你的问题,请参考以下文章