2010-04-30 46 views
2

未來我有自定義UITableViewCells的一個UITableView它是這樣的:iPhone:UITableViewCell的變化高度從NIB

[ CELL 0 
    [ description ] 
    [ dynamic content type 1 ] 
    [ dynamic content type 2 ] 
    [ dynamic content type 3 ] 
] 
[ CELL 1 
    [ description ] 
    [ dynamic content type 1 ] 
    [ dynamic content type 3 ] 
] 
[ CELL 2 
    [ description ] 
    [ dynamic content type 2 ] 
] 
[ ... and so on ... ] 

由於[說明]部分已經是相當複雜的,我決定使用Interface Builder設計它並以編程方式將cellForRowAtIndexPath中的[動態內容]添加到[cell addSubview:...]。我現在的問題是,我在界面生成器中爲自定義UITableViewCell設置了默認高度,但是當我添加[動態內容]時(可能介於0..3之間),我擁有不同高度的單元格。

有一件事是當然要計算總高度並更改heightForRowAtIndexPath的返回值,但是如何更改我的實際cell(它是從具有固定高度的nib文件加載的)的高度值?

回答

3

你爲什麼不更新單元格的cellForRowAtIndexPath邊界(你已經添加了動態內容)?

+0

TableView Widget將在每個單元格獲取單元格之前分配高度。這是爲了確定滾動長度和我想象的其他性能考慮。如果你只是設置邊界,那麼高度將適用於一個邊界,但是它會在其餘的單元格之上。 – 2010-04-30 13:15:09

+0

@Brian我認爲這就是Stefan在最後一句話中的意思。他已經計算出正確的高度並將其返回到委託方法'heightForRowAtIndexPath'中。他關心細胞的界限。我不確定UITableView是否會修改單元格的大小。它修改'框架的原點 - [UITableView的layoutSubviews]'因爲它有安排細胞。 – 2010-04-30 13:43:31

+0

我其實之前用setFrame試過,但沒有奏效。我可能在同一時間搞砸了其他的東西。我現在用setFrame和setBounds嘗試了它,並且兩個都能工作:-) Muchas gracias。 – znq 2010-04-30 15:00:29

0

要計算並返回值:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 

有一點要注意的是,這將要求在啓動時您的視圖中的每一行,創建計算什麼,所以要小心尺寸。

另一種選擇,這可能是在執行更標準是做了組合的TableView小部件,有你所謂這裏的小區的部分,然後每一行無論是說明或動態內容。如果你的ASCII繪圖是我的設計規範,那麼我會這樣做,但我猜你有更多的東西是你的東西。