分段控制错误选择索引
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() 数组索引的值