UITableView didSelectRowAtIndexPath:在第一次點擊時不被調用




cocoa-touch uikit (8)

UITableViewCellSelectionStyleNone被設置為顯示該問題的單元(ios9)。

我結束了通話

[tableView deselectRowAtIndexPath:indexPath animated:NO];

第一件事

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

這是不一樣的,但是足夠好。 讓我想知道ios10帶來了什麼樣的表破壞。

我遇到了UITableView's didSelectRowAtIndexPath

我的表設置,以便當我選擇行時,它初始化一個新的視圖控制器,並推動它。

我第一次點擊表格中的任何一行,該方法就不會被調用。 一旦我選擇另一行,它就開始正常工作。

我已通過在didSelectRowAtIndexPath上設置斷點來驗證此問題。 將NSLog添加到方法中時,我發現當我選擇最後推送新視圖控制器的第二行時,我看到兩個日誌語句同時出現在控制台中。

有什麼建議麼?


didSelectRowAt函數沒有在第一次或第二次敲擊我的應用程序中調用...我試圖解決問題找不到任何解決方案。 但突然我知道,我正在使用view.animation顏色更改...委託方法沒有被調用,而動畫仍然存在


SWIFT 3

如果你在一個不是UITableViewController的類中使用Swift 3,並且你正在使用UITableViewDelegate ,那麼你可能需要使用方法title:

@objc(tableView:didSelectRowAtIndexPath:) func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){...}

這對我很有用,雖然我剛將項目遷移到Swift 3。它很新,所以稍後可能會解決這個問題。


SWIFT 3

沒有其他的答案在我的情況下工作,對我來說固定的是:

tableView.delaysContentTouches = false


如果你已經在你的類中設置了任何UITapGestureRecognizer,你可以在你的didSelectRowAtIndexPath中添加這一行:

[tableView deselectRowAtIndexPath:indexPath animated:NO];

這對我有效。


我甚至發布了這個答案,因為我認為明星們為了表現自己而進行了對話。

我有這個問題的變化,並檢查了其他解決方案。 在我的表格視圖中,它並沒有處理我第一次敲擊時表格的最後一行。 它突出顯示它,但沒有調用didSelectRowAtIndexPath 。 所有其他行工作正常。 但是,如果我把表格反彈,那麼它似乎解決了這個問題(但是你必須處理tableview反彈)。


檢查您是否在班級中設置了任何手勢識別器。 刪除手勢為我工作。


還要檢查xib文件中表格視圖的選擇屬性。 根據需要使用“單選”或“多選”。





didselectrowatindexpath