2012-02-23 17 views
0

它幾乎是我第一次實現在我的代碼表視圖。我創建了一個簡單的表視圖類,並且我沒有使用這個部分的InterfaceBuilder。我試圖使用方法: heightForRowAtIndexPath 我爲我的類來改變第一行的高度尺寸(在第0),以100和它返回self.rowHeight休止符; 我還創建了我的tableviewcontroller(tableViewController的一個子類),以在模態對話框中顯示我的表格視圖。我試圖在模態對話框中顯示它,當它出現在模式對話框中時,第一部分(當它假設爲100時)的行高度大小不是100,實際上它與其他行的大小相同。 如果我使用添加相同的tableview到我的應用程序中的另一個視圖(不使用模式對話框),它顯示第一行高度爲100.你知道什麼可能會強制模態對話框中的行高不像它設置在方法heightForRowAtIndexPath?的UITableView在一個模式對話框與heightForRowAtIndexPath

感謝, 卡姆蘭

+0

我只是在模態視圖中做了同樣的工作,它工作正常。我發現你的問題有一點奇怪是self.rowHeight?你的委託類有一個叫做rowHeight的屬性嗎?因爲我認爲這應該是tableView.rowHeight。也許你可以分享執行heightForRowAtIndexPath的代碼? – dbrajkovic 2012-02-23 21:49:43

+0

好的,我將「heightForRowAtIndexPath」複製到控制器類,它工作正常!控制器是否應該重寫這些方法來查看正確的高度?或者我做錯了什麼?我的TableView類包含這些方法,但我需要我的UITableViewController中的一些來獲取所有東西? – Cam 2012-02-23 23:38:50

+0

Se答案低於 – dbrajkovic 2012-02-23 23:53:14

回答

1

這聽起來像您所創建的UITableView的子類。所以這是我很久以前學過的一條規則。如果你是UITableView或NSTableView的子類,你可能做錯了什麼。這裏沒有魔法。 UITableViewController自動設置爲它的tableview的委託和數據源。而heightForRowAtIndexPath是一個委託方法。所以它屬於委託類。閱讀有關委託方法的UITableView和Objective-C編程的文檔。此外,http://dbrajkovic.wordpress.com/2011/03/10/delegate-methods-there-is-no-magic-cappuccino-cocoa/

的委託和數據源的方法的要點是完成的tableview的最定製,而不必子類。如果你設置委託=自我和數據源=自我,你肯定是做錯了什麼。即使你確實需要繼承UITableView,tableview的委託和數據源也不應該是self。

+0

你的意思是我不需要從UITableView繼承我的視圖?那麼你如何製作視圖以及如何將其分配給UItableViewController?我真的很困惑..沒有找到一個不使用IB來創建視圖的示例代碼。 – Cam 2012-02-24 19:43:27

+0

首先,您不需要爲視圖創建子類,以創建視圖的實例。 'UITableView * tv = [[UITableView alloc] initWithFrame:CGRectMakeZero];'會爲你創建一個tableview。但是,如果你讀的UITableViewController文檔,你會看到,當您使用創建的UITableViewController'initWithStyle:'如果沒有與表視圖控制器相關的筆尖,它會爲你創建一個實現代碼如下 – dbrajkovic 2012-02-24 19:44:52

+0

你需要子類的UITableViewController 。例如,''OLFeedbackViewController * vc = [[OLFeedbackViewController alloc] initWithStyle:UITableViewStyleGrouped];''是做分組樣式的tableview所需要做的。在這種情況下,OLFeedbackViewController是UITableViewController的子類。 – dbrajkovic 2012-02-24 19:49:01

相關問題