2010-04-24 89 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