2014-02-27 59 views
1

我的主要問題是當它在裏面的單元被重用時,保持UISegmentedControl的選定值。 當我滾動時,重用的單元格對於分段控件仍然具有相同的值。單元格重用時,如何將UISegmentedControl的選定段保留在UITableView中?

- (UITableViewCell *)tableView:(UITableView *)thisTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
static NSString *CellIdentifier = @"yesNoCell"; 
testCell = [thisTableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 

// Configure the cell... 
testCell.mainText.text = [ questionArray objectAtIndex:indexPath.row]; 
[testCell.mainControl setFrame:CGRectMake(690, 22, 334, 40)]; 

return testCell; 
} 

編輯澄清: 我想保持選擇的每一行。例如,我可能有10個可見行和30行。當我在第3行中選擇一個段時,當「3」消失時顯示的行具有相同的選定段。我想確保只有選定段的行是用戶實際更改的行。

+0

請詳細說明您的問題。你想保留選擇還是改變它? – Suhas

+0

我想保留每行的選擇。例如,我可能有10個可見行和30行。當我在第3行中選擇一個段時,當「3」消失時顯示的行具有相同的選定段。我想確保只有選定段的行是用戶實際更改的行。 –

+0

分段控制的內容是否會改變或對於所有單元格是否相同? – Suhas

回答

3

每一行應該有一個屬性你模式保持選定的部分,我們稱之爲selectedSegment。當用戶點擊某個段時,會影響代表受影響行的對象實例的selectedSegment屬性的值。

然後在您的cellForRowAtIndexPath:方法中,使用值selectedSegment屬性更新UISegmentedControl的選定索引。

+1

有助於實現Merlevede的正確答案的兩個技巧:UISegmentedControl.selectedSegment的值-1等於「沒有選擇」,如果您是UITableViewCell的子類,則-prepareForReuse方法可以確保事情在每次細胞被回收。 –

+0

感謝你們三位。我會嘗試這些。 –

+0

這工作!非常感謝。 –

0

只需將可變數組中的分段控件的選定索引保存爲NSNumber對象即可。

在分段控制到indexPath.row的- (UITableViewCell *)tableView:(UITableView *)thisTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath方法設置標籤屬性和得到由indexPath.row從陣列選擇的值

當分段控制改變了你需要替換陣列以新的值選擇的索引選擇的索引(得到由數組變量值)

PS所選擇的指標值 首先,您需要創建數組的索引使用默認值

+0

我也會試試這個。 –

相關問題