2012-09-09 24 views
2

溫柔,我在學習。UITableView中需要多個水龍頭才能打勾

下面的代碼實際上工作正常,除了我第一次點擊一行(適當放置複選標記)之後,我必須點擊一個單元格兩次,才能刪除同一個複選標記。

同樣,刪除它後,它需要兩個水龍頭把複選標記回來。

我該如何解決這個問題?

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *thisCell = [tableView cellForRowAtIndexPath:indexPath]; 
    NSInteger selectedRow = indexPath.row; 

    if (thisCell.accessoryType == UITableViewCellAccessoryNone) { 
     thisCell.accessoryType = UITableViewCellAccessoryCheckmark; 
     if (selectedRow == 0) dm = 1; 
     else if (selectedRow == 1) athero1 = 1; 
     else if (selectedRow == 2) athero2 = 1; 
     else if (selectedRow == 3) athero3 = 1; 
     else if (selectedRow == 4) familyHistory1 = 1; 
     else if (selectedRow == 5) familyHistory2 = 1; 
    } 
    else { 
     thisCell.accessoryType = UITableViewCellAccessoryNone; 
     if (selectedRow == 0) dm = 0; 
     else if (selectedRow == 1) athero1 = 0; 
     else if (selectedRow == 2) athero2 = 0; 
     else if (selectedRow == 3) athero3 = 0; 
     else if (selectedRow == 4) familyHistory1 = 0; 
     else if (selectedRow == 5) familyHistory2 = 0; 
    } 
} 
+0

當您點擊單元格時,您的didSelectRowAtIndexPath是否被調用?你有沒有檢查thisCell屬於同一個對象? –

回答

0

是否有可能將兩個UITableViewControllers推到導航控制器堆棧上?

我碰巧遇到過這種情況,並且問題是導致第二個TableViewController被推入的switch語句中缺少'break'。視圖上的所有內容都需要兩次敲擊,即使是我的「後退」按鈕。

2

確保allowsMultipleSelection未設置爲YES。未使用此屬性時設置的默認值爲NO。如果您在班級中的任何地方使用此屬性,請嘗試將其設置爲NO以檢查它是否有效。這將導致需要2次選擇一行。

self.tableView.allowsMultipleSelection = NO; 
1

有一個數組來存儲選定的行索引。在-didSelect中,檢查行索引是否已經存在於數組中,如果沒有添加它,則將其從數組中移除。並重新載入表格。就這樣。我相信這會起作用。 :]

相關問題