2013-10-18 102 views
0

我正在使用Table視圖,並且在其中有一個帶有複選框的自定義單元格。只要tableview中單元格中的複選框已經通過計算某些邏輯來選擇。屏幕頂部有一個欄按鈕。我想要的是,點擊該按鈕時,與所選複選框關聯的數量應該落入數組中。Cell重用概念中的問題

例如,如果我有六個單元格當前在tableview中,所有這些都被選中,但只有四個當前可見。由於這個按鈕的點擊,只有4個值被添加到數組中。

如何檢測單擊按鈕時選擇的所有複選框? 上的按鈕的點擊的代碼是: - (IBAction爲)btn_AddRefill_click:(ID)發送方{

for (int i=0; i < [arr_RxDetails count]; i++) { 


    NSIndexPath * indexpath = [NSIndexPath indexPathForRow:i inSection:0]; 
    //NSLog(@"The indexpath is %@",indexpath); 
    MyMedicationCell * cell = (MyMedicationCell *) [tableview cellForRowAtIndexPath:indexpath]; 

    // here I am checking if the button is selected or not. 
    if ([cell.btn_RxCheck isSelected]) { 
     //NSLog(@"the Rx id is %@",[[arr_RxDetails objectAtIndex:i]valueForKey:@"RxId"]); 
     [self.arr_RxNo addObject:[[arr_RxDetails objectAtIndex:i]valueForKey:@"RxId"]]; 


    } 
} 
NSLog(@"the array is %@",arr_RxNo); 
[self.obj_AddRxs didSelectRxs:self.arr_RxNo]; 

}

如在該代碼中的循環6次運行,但它檢測到檢查框只能在4個單元格中選中,因爲它們目前可見。我該怎麼辦?

回答

0

如果我理解正確,我認爲你應該存儲是否檢查值是否在整個數據集大小的數組中。在這種情況下6.

將目標方法添加到該複選框的valueChangedUIControlEvent。在此方法中存儲是否檢查行的值。

此外,在您的cellForRowAtIndexPath中:根據數組內容設置複選框的值。

如果您嘗試使用實際的單元格作爲存儲數據的基礎,則需要將整個表格保存在內存中,這會影響UITableView提供的數據和UI虛擬化效率的對象。

希望幫助,

戴夫

+0

但我如何檢測加載視圖時是否檢查複選框。由於該複選框是單元格的一部分。這是所有的屬性都由單元本身管理。建議這個東西。由於價值改變的方法沒有運行在視圖加載時,所以我無法檢測複選框,因爲它是由仍然顯示4選中的tableview管理的。 – Shikhar

+0

在您的cellForRowAtIndexPath中:當您創建單元格時,您可以將目標添加到您的UITableViewController中的方法複選框控件。在這種方法中,您可以存儲複選框是否被選中。 –

0

您可以創建一個NSMutableArrayselectedCheckbox將跟蹤選定的複選框。

每當一個複選框被選中剛剛添加複選框數陣列

[selectedCheckbox addObject:@"2"]; 

,每當它未被選中剛剛從陣列

[selectedCheckbox removeObject:@"2"]; 

現在,你可以參考這個數組得到刪除所選複選框的數量以及所選複選框的索引。 希望這會幫助你。