2012-05-11 40 views
1

我有一個自定義UITableViewCell,上有一個UITapGestureRecognizer,這個會跳到一個新的視圖控制器。當輕擊手勢出現時,segue可以工作,但始終只傳遞來自唯一第一個單元格的數據,而不管tapGesture執行的是哪個單元格。但是,當我首先選擇標籤tapGestureRecognizer外部的單元格時,然後執行輕擊手勢,數據成功通過b/c我首先選擇了相應的單元格。點擊識別UITavleViewCell標籤中的手勢,但也不會選擇單元格

如何設置tapGesture以識別單元格選擇?

P.S.我在故事板中設置了手勢並繼續,而不是代碼。另外,我的數據傳遞代碼是我的prepareForSegue方法。

+1

爲什麼使用UITapGestureRecognier?你爲什麼不讓UITableView完成它的工作並處理選擇並推送到詳細視圖? –

+0

我有兩個標籤在每個手勢與手勢識別,segue到兩個不同的視圖控制器。 – mnort9

+0

不知道它的佈局如何,我不能確定,但​​我有一種感覺,這是一個壞主意,非常友好的用戶。至於解決你的問題,我需要看你的tapGesture選擇器的代碼。 –

回答

4

你的問題對細節有點輕鬆,但讓我問:你是否確定在你的代碼中當水龍頭出現時選擇了哪個單元?

即。在出現水龍頭時觸發的方法中,通過查詢tableview來檢查水龍頭出現在哪個單元格,並且可以從prepareForSegue方法中確定需要傳遞的代碼。

例如,我使用下面的這個方法來確定點擊哪個單元格,並調出該單元格的文本字段的鍵盤。你可以很容易地調整這個來存儲哪個單元被點擊,然後在你的prepareForSegue中使用它來發送正確的數據。

希望這是你在找什麼。雖然不能完全說明你的問題!

- (void) tapDetected:(UIGestureRecognizer*)sender 
{ 
    // get location of tap 
    CGPoint tapLocation = [sender locationInView:self.tableView]; 

    // Query tableview and get location of cell 
    NSIndexPath *idp = [self.tableView indexPathForRowAtPoint:tapLocation]; 

    // Now get the actual cell 
    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:idp]; 

    // Get handle on text field 
    UITextField *textField = (UITextField *)[cell viewWithTag:1]; 

    // Bring up keyboard for that textfield. 
    [textField becomeFirstResponder]; 


}