当重用单元格时,如何将UISegmentedControl的选定段保留在UITableView中?

时间:2014-02-27 03:36:58

标签: ios objective-c uitableview uisegmentedcontrol

我的主要问题是当UISegmentedControl内部的单元格被重用时,保留UISegmentedControl的选定值。 当我滚动时,重用的单元格仍然具有相同的分段控件值。

- (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”消失时显示的行具有相同的选定段。我想确保所选段的唯一行是用户实际更改的行。

2 个答案:

答案 0 :(得分:3)

每行的模型应具有保留所选细分的属性,我们可以将其称为selectedSegment。当用户单击某个段时,会影响表示受影响行的对象实例的selectedSegment属性的值。

然后在cellForRowAtIndexPath:方法中,使用selectedSegment属性的值更新UISegmentedControl的选定索引。

答案 1 :(得分:0)

将可变数组中的分段控件的选定索引保留为NSNumber对象。

- (UITableViewCell *)tableView:(UITableView *)thisTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath方法中将分段控制的tag属性设置为indexPath.row,并通过indexPath.row从数组中获取选定值

当分段控件更改选定索引时,您需要将数组中的选定索引替换为新值(通过数组中的标记值获取所选索引值)

P.S 最初,您需要使用默认值

创建索引数组