2014-08-31 70 views
0

在我的表格視圖中,每個單元格都包含一個比單元格更小的UIView。我只想在用戶點擊這個UIView時執行一個細節視圖的細節,而不是如果他按下了UIView之外的細胞。我試圖給UIView添加一個手勢識別器,但是當調用關聯的方法時,它不知道哪個單元被按下了。我能做什麼 ?桌面視圖UIView上的手勢識別器

回答

0

您可以以獨特的方式爲每個視圖分配標籤屬性(整數)。例如,它可以是整數,它是段和行的組合。 或來自表格數據源的單元格的某些唯一ID。

然後在識別器中,您可以分析標籤值。

0

在您的單元格子類中創建一個委託協議(和一個委託屬性以匹配),該單元具有像'cellWasSelected:(MYCell *)單元'這樣的一些方法。在cellForRowAtIndexPath中返回單元格時,請將ViewController設置爲單元的代表。在單元格子類中,添加您想要確定何時點擊的機制。手勢很好。調用你的委託方法傳遞self作爲參數。在你的ViewController中,你可以調用tableview indexOfCell(或者類似的東西,不能記住我頭頂的名字)來獲得你需要的索引路徑。然後,手動執行你的搜尋。你可以存儲一個「選中的單元格」,或者使用tableView手動選擇那個單元格,如果已經設置好了,它應該觸發你的segue。

0

您應該爲您的CELL添加一個委託。你能做什麼,你知道,你可以在你的自定義單元格讓你UIView的參考,像這樣:

@property (nonatomic,weak) IBOutlet UIView *tappableView; 

,並添加手勢識別它。

現在,創建一個協議,並創建一個方法,

-(void)didTapViewAtCell:(MyCustomCell*)cell 

有一個delegate是遵守此協議,並呼籲它在你的手勢識別目標的方法。類似...

[self.delegate didTapViewAtCell:self]; 

在您的UITableViewController中實現此協議並實現此方法。我認爲這是繼續下去的最好方法。 :)

+0

Thx對於您的迴應,但我對協議不是很熟悉,您能否解釋一下如何創建一個協議,以及您的意思是「擁有一個遵守此協議的代表」?謝謝 – Coconuts 2014-09-03 13:15:31

+0

https://developer.apple.com/library/ios/documentation/general/conceptual/CocoaEncyclopedia/DelegatesandDataSources/DelegatesandDataSources.html 請先閱讀本文。 :) – avismara 2014-09-03 13:29:56

+0

好吧,我讀過它,但我不確定要很好理解,我還是不明白如何創建一個協議,並有一個堅持它的代表... – Coconuts 2014-09-03 15:55:27