2012-04-04 101 views
0

好的,所以我有這個問題,我需要訪問顯示在UITableView中的頁眉/頁腳。此外,我需要從UITableView的子類做到這一點(所以我不能簡單地分配標籤到UITableView委託的視圖)。 UITableView確實保留了一個可見的頁眉和頁腳數組,但它不提供對這些數組的訪問權限,甚至不能訪問這些數組,甚至對於我個人認爲是子類的子類。獲取UITableView頁眉/頁腳

我需要這個,以便我可以提供一個自定義的拖放插入/移動用戶界面。我試圖讓它的工作方式與Apple自己的重新整理界面幾乎完全一樣,但當然還有我自己的自定義實現(例如從另一個表中拖拽的功能)。除了頁眉/頁腳,一切都完美無缺。

目前我試圖通過遍歷UITableView的所有子視圖來破解它。我很確定UITableView的唯一子視圖是:backgroundView,UITableViewCells和Headers/Footers。所以我只需要確定哪些是UITableViewCells(非常容易),哪些是背景視圖(也很容易),哪些是頁眉/頁腳(並不那麼容易)。我非常肯定我可以這樣做,但這絕對是一種黑客行爲,如果可能,我寧願找到更好的方法。

UPDATE

我重寫- (void) setDelegate:(id<UITableViewDelegate>)delegate方法和檢查,看看是否代表響應適當的選擇產生頁眉/頁腳(並適當設置BOOL的)。這使得確定一個特定的子視圖是多麼容易,因爲header - > cells - > footer的進度是可預測的。

回答

0

你說你不能使用UITableView委託方法,但你是否考慮讓UITableView的子類對象成爲它自己的委託?在名爲realDelegate的子類上創建一個單獨的屬性,並將其他任何委託調用傳遞給該類。

+0

這是一個有趣的想法。我看到的唯一問題是我不確定UITableView是否根據它的委託響應來改變它的行爲。它將自己的代理實現爲子類,然後我必須對所有事情做出響應,儘管代理可能不是。可能有許多方法可以完成這項工作,所以如果我現在的方法不起作用,那麼你的下一個工作就是排隊。 :) – 2012-04-04 14:15:19

+0

好的,你的解決方案工作。代表沒有太多麻煩,我絕對需要明確地訪問所有頁眉/頁腳才能正常工作。謝謝! – 2012-04-04 20:34:28

+0

不要忘記,如果([self.delegateresponsestoSelector:])決定是否傳遞給「真正的代表」 – 2012-04-05 13:34:23