2012-12-14 87 views
0

我的設計師想出了一個有點棘手的設計。在tableView中,他們要我
1)有一個自定義配件視圖 - (UIButton子視圖) - 完成
2)給一個自定義動作(沒有detailView推到導航堆棧,但別的東西) DONE根據點擊的內容,不同的「突出顯示」配件視圖顏色?

現在出現棘手的部分。


1)如果我點擊單元格,附件視圖應顯示「highlightBackground」。
2)如果我點擊附件視圖,只有附件視圖應該突出顯示,但用「alternativeHighlightedBackground」。

所以,回顧一下,對於accessoryView,我們有正常的背景和兩個不同的高亮背景,這取決於整個單元是輕敲還是僅輕擊輔助視圖。

此刻,我將一個UIButton作爲子視圖添加到cellForRowAtIndexPath中的附件視圖中,該附件用作自定義附件。顯然,附件視圖將觸摸事件傳遞給按鈕,並且該按鈕以相同的背景高亮顯示,而不管被點擊的是什麼。 此時單元格不是自定義的,它是一個普通的UITableViewCell實例。 SDK是iOS5,不幸的是沒有iOS6可以使用。

有什麼建議嗎?

回答

1

我會放棄配件視圖路線,並創建一個UITableViewCell的子類。只需在初始化函數來創建你按鈕,將其添加爲一個子視圖到小區的contentView,有一些看起來像這樣的設置按鈕的觸摸停止動作是你什麼都想要,然後覆蓋layoutSubviews

- (void)layoutSubviews 
{ 
    [super layoutSubviews]; 

    CGRect bounds = self.contentView.bounds; 

    CGFloat buttonOriginX = self.contentView.bounds.size.width - BUTTON_WIDTH - PAD; 
    CGFloat buttonOriginY = floorf((bounds.size.height - BUTTON_HEIGHT)/2.0)+1; 

    self.mybutton.frame = CGRectMake(buttonOriginX, buttonOriginY, BUTTON_WIDTH, BUTTON_HEIGHT); 
} 

該按鈕將在單元格以這種方式截取觸摸。然後,您可以完全控制按鈕在觸摸時顯示的內容(將其設置爲高亮狀態圖像)。

+0

我試了一下,基本上沒有什麼錯誤的使用配件視圖。真正的問題是知道什麼時候電池被竊聽,什麼時候沒有。基於此,我需要將突出顯示的背景設置爲兩個版本之一。問題是我沒有一個可靠的方法來檢測這一點,另一件事是我需要設置背景回到默認的一旦單元格再次顯示在列表中。 –

+0

在按鈕的操作方法中,將單元格背景設置爲所需的顏色。 – kamprath

+0

切換背景不成問題。我可以用很多方式做到這一點。正如我所提到的那樣,問題是發現電池被竊聽的時間以及輔助視圖的時間。同時確保當我將這個表視圖壓入堆棧或在彈出其他視圖之後再次顯示時,正確的背景被設置回來。 我最終重寫了自定義單元格中的5個方法。 –

相關問題