2013-10-17 44 views
0

我想將我個人創建的initWithStyle:reuseIdentifier:設置爲tableView:cellForRowAtIndexPath:的或1tag,以表明我是否應該將其子視圖定位在左側還是右側。這樣做是否安全,或者蘋果是否會混淆這個單元格標籤的價值?我知道我可以爲每種類型的單元格使用單獨的單元格標識符,但除了定位子視圖和某些顏色外,兩個單元格都幾乎相同。 (我正在使用聊天氣泡重新創建原生Messages應用程序。)蘋果是否設置了UIView標籤?

回答

0

我認爲可以給UITableViewCell一個tag。界面生成器讓你做到這一點。不過,這樣做感覺不穩定是可以理解的。通常情況下,您需要給一個視圖添加標籤,以便您通過addSubview:明確添加到另一個視圖。但是,想一想。如果蘋果與視圖控制器的view中視圖的任何標記的值相混淆,則可能會破壞[self.view viewWithTag:TEXT_FIELD_TAG]之類的功能。所以,我懷疑他們會。我曾經聽說Apple保留標記整數< = 10,因此,應該使用大於10的整數作爲標記值,​​但我不明白這可能是真的。

1

沒關係,但更好的地方設置標籤將是UITableViewDelegate的tableView:willDisplayCell:forRowAtIndexPath:方法。根據文檔:

表視圖將該消息發送給其委託,就在它使用單元格繪製一行之前,從而允許委託在顯示之前自定義單元對象。此方法爲委託人提供了覆蓋表視圖較早設置的基於狀態的屬性的機會,例如選擇和背景顏色。委託返回後,表視圖僅設置alpha和frame屬性,然後僅在滑動或滑出行時對行進行動畫處理。

1

UITableViewCell的(或任何UIView的)標籤設置爲您想要的值是絕對安全的。沒有人(包括Apple)會在您的應用程序控制範圍之外混淆此標籤的價值。

3

雖然你當然可以使用標籤,但我肯定會建議更加明確。幾個月後,當您查看您的代碼時,您會爲自己提供幫助。我會創建一個具有contentAlignment屬性的自定義UITableViewCell子類,您可以明確設置爲leftright。 (ab)使用單元格的標籤會更加可讀。

事情是這樣的:

typedef NS_ENUM(NSUInteger, MyTableViewCellContentAlignment) { 
    MyTableViewCellContentAlignmentLeft, 
    MyTableViewCellContentAlignmentRight 
}; 

@interface MyTableViewCell : UITableViewCell 

@property (assign, nonatomic) enum MyTableViewCellContentAlignment contentAlignment; 

@end 

享受。

+0

很好的答案,我會使用這個解決方案。 – AlKozin

+1

是的,那樣做。比我下面的蹩腳答案要好得多。 – picciano

相關問題