2009-12-03 96 views
0

好吧我正在一個項目上工作,如果我能想出如何改變一個(或全部)單元格,以便它們的高度取決於文本數量保持。我發現,使得它看起來相當可行的internet的教程,但我只是我陷入becuse我複製和粘貼自己的代碼直接進入我的應用程序,並有彈出一個錯誤,他的代碼讀取:UITableViewCell動態高度問題

NSString *text = [items objectAtIndex:[indexPath row]]; 

如果使用本教程速戰速決,或者如果有人可以解釋項目的事情是什麼一回事,thatd是巨大的

+1

快速提示:如果您只是複製粘貼代碼,並且您不知道它是什麼,則需要進一步學習可可設計模式和Objective-C。 你在這裏做一個應用程序,但也*學*。 – gcamp

回答

1

在這個例子中「項目」是一個NSArray包含要添加的值細胞到桌子上。通常你會在填充這樣一個數組你

-(void)viewDidLoad 

-(void)viewWillAppear:(BOOL)animated 

所以,一旦你使用這種方法,你應該掛工作教程提供您的數據的方法。

在你的頭文件

你想

NSArray *items; 

@property(nonatomic,retain)NSArray *items; 

,並在您.m文件

@synthesize items; 

然後在任一上面列出的方法,這

self.items = /* however you can build an NSArray with the data you need*/ 
0

變量NSString* text表示要在該單元格中顯示的字符串。如果您不知道並且「您的應用程序」不知道要顯示什麼內容,請向您提出以下問題:您希望應用程序顯示什麼內容?數據是什麼?

4

我覺得你超越自己。您需要了解Objective-C的基本知識,例如數組,字符串等,以及在開始嘗試設置自定義行高之前填充表的基礎知識。我會推薦這個線程開始:Howto articles of iPhone Development.

我發現Beginning iPhone Development Exploring the iPhone SDK By: Dave Mark; Jeff LaMarche非常有用,但我以前在Objective-C有一個很強的背景。對於Objective-C,Programming in Objective-C 2.0, Second Edition By: Stephen G. Kochan是一個很好的參考。兩者都可以通過訂閱在線獲得,因此您不必花費80美元就可以開始使用。

5

你可能應該看看錶格如何工作以查看數據如何流入它們的其他示例。

但是,當你準備好這裏是你怎麼做可變高度細胞粗線條:

1)有heightForRowAtIndexPath返回自定義高度爲每一行

2)在該方法中,圖什麼該行的文本會,然後使用方法:

- (CGSize)sizeWithFont:(UIFont *)font forWidth:(CGFloat)width lineBreakMode:(UILineBreakMode)lineBreakMode 

(在NSString的,在UIStringDrawingAdditions)找出返回什麼高度(你需要的文字高度加上一些填充)。寬度是容納文本的標籤的寬度,返回的CGSize保存標籤在使用該文本時的高度。

3)在您的單元格中,您必須將行數設置爲0,以便可以填充,但需要填充多個。

4)如果您使用的是自定義單元格,您需要確保標籤高度已調整大小以適合您要放置的文本 - 單元格高度將根據heightForRowAtIndexPath方法設置。我認爲一個普通的UITableViewCell可能會將文本標籤與單元格一起調整高度,如果不是,您還需要調整它們的大小。

5)將您正在使用的文本設置到標籤中,並享受。

理解的關鍵是您需要的高度真的是兩倍,一次是在heightForRow(控制單元格高度),然後再次設置單元格中的文本時(爲了確保標籤尺寸合適)。