2016-06-07 30 views
1

我一直在尋找這個問題的許多SO答案,並沒有找到一個解決方案,所以我想我會問自己。UITableView內的UIView不觸發didSelectRowAtIndexPath

我有一個正常的UIViewController,並在其中是UITableView。我正確填充表視圖,但方法

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

未被調用。我的數據源和委託都已正確連接,我已啓用用戶交互,並且爲選擇設置設置了單選。

問題是否可以在視圖控制器中嵌入UITableView?我怎樣才能解決這個問題?

+0

你確定你沒有使用didDeselectRowAtIndexPath嗎?我做了這種類型很多次,總是很痛苦,發現 – Signo

+0

@Signo是啊我看到其他人建議在其他地方修復這個問題,不幸的是它不是我的問題:/ – multitaskPro

回答

0

因此,原來我是個白癡,放線我的自定義的UITableViewCell提到

self.userInteractionEnabled = NO; 

糟糕:/

感謝大家試圖解決我的問題。

3

您是否使用過任何gestureRecognizer?如果是,那麼試試這個代碼。

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{ 
    if ((touch.view == tblObj)) 
    { 
     return NO; 
    } 
    return YES; 
} 
+0

我不這麼認爲。它可以隱藏在某個地方,還是顯示在顯示我的視圖層次結構的側欄中? – multitaskPro

+0

在視圖中,如果您使用過任何類型的gester,那麼它有可能。因爲當你點擊tableview時調用gester方法。 –

0

你有沒有設置你的tableview委託和數據源?

self.tableView.delegate = self; 
self.tableview.dataSource = self; 
0

從界面構建器(即從視圖控制器或故事板)中選擇您的tableview

然後從utilities

現在確保下面的設置都是存在的,

Selection - Single Selection 

Editing - No Selection during editing (if you are selecting row during editing then change it) 

Show selection on touch checkbox should be checked 

view

User Interaction Enable must be Checked. 

然後選擇您tableview cell

而且使當然,

User interaction enable is checked under `view` 

然後選擇單元格的內容視圖,並檢查是否檢查了用戶無法啓用啓用。

第二件事確保用戶交互功能啓用您的rootview(即self.view)和整個視圖層次結構來自self.view和tableView之間。

,並確保已經設定了正確datasourcedelegate自我喜歡,

self.myTableView.delegate = self; 
    self.myTableView.dataSource = self; 
+0

我有你在這裏提到的所有東西,但我使用Interface Builder將代理和數據源連接起來,而不是在代碼中。這會導致問題嗎? – multitaskPro

+0

它應該不會造成問題,然後也嘗試設置代表和數據源,就像我在答案中提到的那樣。 – Lion

相關問題