分段控制错误选择索引

Posted

技术标签:

【中文标题】分段控制错误选择索引【英文标题】:Segmented Control false selected Index 【发布时间】:2013-11-13 15:54:31 【问题描述】:

我对一些分段控件有疑问: 我有一个包含 10 个单元格的表格视图,所有单元格都有一个分段控件。

现在我的问题: 如果我更改分段控件的选定索引并向上或向下滚动,则某些分段控件的选定索引会发生变化。

有人知道什么是假的吗?

//编辑:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    static NSString *CellIdentifier;

    CellIdentifier = @"editCell";
    cellList[indexPath.row-1] = [[MSEditCardCell alloc] init];
    cellList[indexPath.row-1] = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    return cellList[indexPath.row-1];

【问题讨论】:

你能贴出你设置每个分段控件的选定索引的代码吗?好像和细胞复用有关。 您很可能会重复使用该单元格,不是吗?不要重复使用它。 编辑:该死的。来晚了。 ;) 你实现了 segmentedControlDelegate 吗?如果是,你能分享你实现的方法吗? @Leandros 最佳做法是建立一个模型来指示必须选择哪个分段索引,并使用该模型,而不是避免重用,这可能会对性能产生巨大影响。 这是因为您的tableView:cellForRowAtIndexPath: 错误。显示您的代码,有人会帮助您发现问题。 【参考方案1】:

正如 Durican 所说,这是细胞重用的问题。您需要设置一个数据模型来存储您在每个单元格中呈现的信息。当用户更改给定单元格中的选定段时,您需要通过更新模型中的该位信息来响应该更改。

然后,在您的 cellForRowAtIndexPath 方法中,您需要从模型中获取适当的条目并使用该信息来完全配置新单元格,包括为该单元格设置分段控件的状态。

这是基本的表格视图,大多数人在第一次开始使用表格视图时会遇到困难。

【讨论】:

【参考方案2】:

这是因为滚动时单元格被重复使用。只需为单元格添加 iVar 或属性(布尔值),每次在 cellForRowAtIndexPath 中配置单元格时,请确保根据您设置的布尔值设置 segmentedControl

【讨论】:

我从不重复使用这些单元格。我将它们存储在一个数组中,每一行都有自己的单元格。 你的 cellForRow 是什么样子的?

以上是关于分段控制错误选择索引的主要内容,如果未能解决你的问题,请参考以下文章

SIGSEGV,分段错误。 while printf() 数组索引的值

分段错误:为什么这里的数组索引超出范围?

在 C++ 索引程序中使用向量时出现分段错误 11

UISegmentedControl 错误的dividerImage

分段错误11:在这种排序和搜索问题中

分段错误:从二维向量中随机删除元素