2013-08-02 55 views
1

在我的tableview中,我使用了包含複選框的自定義單元格。代碼中添加的複選框中的自定義單元格類:如何爲子視圖阻止didSelectRowAtIndexPath?

checkbox = [[SSCheckBoxView alloc] initWithFrame:CGRectMake(0, 20, 20, 20) 
                style:kSSCheckBoxViewStyleGlossy 
                checked:NO]; 
[self addSubview:checkbox]; 

我的問題是每當我上的複選框,它會調用didSelectRowAtIndexPath點擊。如何阻止這個?

+1

喲需要在您的SSCheckBoxView上添加一個自定義按鈕,併爲該按鈕添加目標和選擇器。之後當u單擊該didSelectRow不會被調用,它會調用按鈕 –

+0

的選擇DONOT覆蓋didSelectRowForIndexPath方法 – iProgrammer

回答

4

您必須添加一個UIButton或將該複選框設爲按鈕,然後addsubview它位於UITabelViewCell中。這將覆蓋didSelectRowAtIndexPath方法本身,並且點擊按鈕會使您的操作。同時使按鈕的大小更大一點,以確保可點擊區域的正確性。希望這可以幫助。

編輯:

所以,如果ü要做到這一點,我有一個辦法一個布爾值IsChecked = YES添加到複選框方法。然後,當didSelectRowAtIndexPath方法被調用,以將其添加

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

     if(IsChecked == NO) 
     { 
     Ischecked = NO; 
     // Add your methods 
     } 
    } 

希望你得到它....

+0

我已經增加了一個目標方法[複選框setStateChangedTarget:自我選擇:@選擇(checkboxViewStateChanged :)] ;.但checkboxViewStateChanged調用後,didSelectRowAtIndexPath方法也越來越被稱爲 – manujmv

+0

請檢查我的編輯.... :) – IronManGill

3

您可以通過該指數路徑返回nil停止的選擇。使用下面的代碼。

-(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 
    return nil; 
} 
相關問題