2011-08-02 184 views
3

我有像這樣一個UIViewController內的UITableView:didSelectRowAtIndexPath方法不會被調用

.H

@interface OutageListViewController : UIViewController<UITableViewDelegate,UITableViewDataSource> { 
    IBOutlet UITableView *outageTable; 

.M

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSLog(@"Selected"); 
} 

我已經定製表格單元格:

//編輯 我在我的自定義視圖上並排播放UILabel,還有一個黑色全面蔓延整個地區。但是,在調整/刪除背景圖片和標籤後,我將其放在自定義單元格上,「didSelectRowAtIndexPath」仍未被調用。 // END EDIT

@interface AbstractSummaryListViewCell : UITableViewCell {...} 

@interface FiveColumnSummaryCell : AbstractSummaryListViewCell {...} 

這UIView的是另一個的UIView裏面:

@interface CustomTabBarController : UIViewController { 
    OutageListViewController *outageListViewController; 

而且我的AppDelegate內容添加到窗口:

[window addSubview:[customTabBarController view]]; 

現在我'試圖確定哪個單元格被點擊和didSelectRowAtIndexPath不會被調用,我有數據源和委託從UITableView連接到文件的所有者,實際上數據填充正確,因爲我的「cellForRowAtIndexPath」指定,任何想法如何解決這個問題?

謝謝!

+0

當你觸摸細胞時,它會變成藍色一秒鐘? –

+0

亞歷克斯,抱歉從我原來的帖子中遺漏了這些信息。不,當我觸摸時它不會變成藍色。我可以上下滾動,但數據正確顯示。 –

+0

嘗試刪除其中一個子視圖,以便有一個「洞」,然後點擊該單元格,讓我們知道發生了什麼,我們需要縮小問題的範圍以便修復它。 –

回答

4

我解決了它:忘記檢查用戶交互啓用在我的自定義單元格xib中。真是個蠢才!

0

您可以進行快速測試...刪除「大」標籤並查看是否調用了didSelectRowAtIndexPath。

+0

我在發佈問題後測試了這個權限,沒有在刪除背景圖像之後和標籤我放在自定義單元格,「didSelectRowAtIndexPath」仍然沒有被調用。 –

3

UITableView的以下屬性全部爲YES

  • allowsSelection
  • allowsSelectionDuringEditing

Edit: 我認爲保羅是正確的。代表財產有一些問題。你可以在 - (void)viewDidLoad中檢查tableView的委託屬性。正如你所說,他們應該連接到xib中的FileOwner。所以下面的代碼不會獲得零。

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    // They should not be nil. 
    NSLog(@"delegate:%@ dataSource:%@", self.tableView.delegate, self.tableView.dataSource); 
} 
+0

allowSelection默認爲YES,並且允許SelectionDurningEditing默認爲NO,因爲我不需要編輯功能,所以我保留它。即使使用outageTable.allowSelection = YES,當我觸摸它時,仍然看不到單元格變爲藍色。 –

+0

我編輯了我的答案,您可能需要檢查有關tableView的屬性。 – AechoLiu

+0

我添加了NSLog到我的'OutageListViewController'''viewDidLoad',並且我得到了**委託: dataSource: **作爲輸入。 但是我必須做'outageTable.delegate'和'outageTable.dataSource',如果我添加'self',有一個錯誤告訴我**在'OutageListViewController *'類型的對象上找不到'屬性'outagetable'** , 有任何想法嗎? (在.h中,我有'IBOutlet UITableView * outageTable',但是我沒有'@ property'和'@ synthesize'。 –

2

這有可能是視圖控制器還沒有連接到任何地方outageTabledelegate財產。

+0

''outageTable'''delegate'連接到文件的所有者,它是一個'UIViewController ',那就是你所指的?謝謝。 –

+0

@Derek是的,這就是我的意思。 –

+0

因此,我驗證了IB中的連接,以及下面提到的NSLog方法TORO,看起來連接工作正常,任何想法可能是什麼問題?謝謝。 –

相關問題