2015-05-18 114 views
0

我陷入了構建我的應用程序的問題。基本上我有一個tableview顯示自定義單元格中的數據。現在這個小區被分成兩個圖像;一個在左邊,一個在右邊。找出點擊單元格的座標

單擊單元格時;調用didSelectRowAtIndexPath方法,但是我想找出單元格的哪個部分被點擊;無論是正確的圖像還是左側的圖像。

做到這一點的一種方法是壓倒我自定義單元類的touchesbegan事件;我可以通過這種方式獲得觸摸的座標,並手動檢查是選擇了左側圖像還是右側圖像;然而這導致事件沒有被解僱。

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { 
    let touch = touches.first as! UITouch 
    let location = touch.locationInView(self) 
    var xcoord = location.x 
    touchPosition = xcoord 
} 

這個代碼是什麼我想在我的自定義單元格級使用,但我現在不知道怎麼火didSelectRowAtIndexPath事件中,該小區在表格中。我也沒有提及那張桌子。

這裏touchPosition是一個全局變量,我試圖設置它,以便我可以在我的didSelectrowAtIndexPath方法中訪問它,但它不會被解僱。

+0

插座連接到您的tableView並刪除重寫 –

+0

您可以使用VAR selectedCell = tableView.cellForRowAtIndexPath(indexPath)作爲的UITableViewCell獲得的細胞在didselect方法! – Amit89

+0

你必須調用'super'。 –

回答

0

設置您的touchesBegan函數中的單元格的selected屬性應使代表調用didSelectRowAtIndexPath

如果不工作,你可以試試這個:

在您的自定義單元格類創建weak var tableView: UITableView?。還要添加var indexPath: NSIndexPath以瞭解您的UITableViewCell中的單元格索引路徑。然後,在創建單元格時,將tableView設置爲您的表格視圖,將indexPath設置爲其索引路徑。

現在,你有一個鏈接到表視圖的委託。所以,在你的自定義單元格類touchesBegan,您可以撥打tableView?.delegate?.tableView?(tableView, didSelectRowAtIndexPath: indexPath)

+0

但你不想在'touchesBegan'中做到這一點。例如,用戶應該能夠將他們的手指從視圖上滑開以取消觸摸。 –

+0

哦,對。他可以在'touchesEnded'中實現它,並計算它是否在視圖的某個安全距離內,就像在UIButton中一樣。對於'touchesBegan',他可以檢查是否最初按下了哪個圖像,然後'touchesEnded'將檢查觸摸位置是否仍在安全距離內。 – chrisamanse

+0

想想吧,'touch'函數不會妨礙表視圖的滾動嗎? – chrisamanse