2014-02-27 25 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

我也会试试这个。 –

相关问题