ios - 滚动后tableview内的数据混淆了
<p><p>我已经阅读了很多问题并尝试了解决方案,但我的 <code>tableview</code> 仍然无法解决问题。</p>
<p>滚动后,tableview 的行中的数据会互换,有时会丢失。</p>
<p>这是我的代码:</p>
<pre><code>- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *modifierCheckCell = @"BGMModifierCheckCell";
BGMModifierCheckCell *cell = nil;
cell = (BGMModifierCheckCell *);
if (cell == nil) {
NSArray* topLevelObjects = [ loadNibNamed:modifierCheckCell owner:self options:nil];
for (id currentObject in topLevelObjects) {
if (]) {
cell = (BGMModifierCheckCell *)currentObject;
break;
}
}
cell.selectionStyle = UITableViewCellSelectionStyleNone;
NSArray *optionIds = [[ objectForKey:@"optnItem"] objectAtIndex:indexPath.row];
BGMOptnCats *optnCat = objectForKey:@"optnCatId"]];
[optionIds enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
__block int optnTag = ;
BGMItemDayOptns *item = ;
[item.optns.optnLangs enumerateObjectsUsingBlock:^(id obj, BOOL *stop) {
BGMOptnLangs *lang = (BGMOptnLangs *)obj;
if () {
NSString *optn = ;
if () {
RadioButton *rb1 = [ initWithFrame:CGRectMake(0, 0, 200, 40)];
;
rb1.delegate = self;
if (idx == 0) {
;
} else if (idx == 1) {
;
} else if (idx == 2) {
;
}
} else if () {
SSCheckBoxView *checkBox = [ initWithFrame:CGRectMake(0, 0, 200, 40) style:kSSCheckBoxViewStyleMono checked:NO];
checkBox.tag = optnTag;
;
;
;
if (idx == 0) {
;
} else if (idx == 1) {
;
} else if (idx == 2) {
;
}
}
}
}];
}];
}
return cell;
}
</code></pre></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>问题是您的单元格正在被重复使用。所以滚动时行会互换。</p>
<p>在 if (cell == nil) 之外设置单元格内容。</p>
<pre>- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
静态 NSString *modifierCheckCell = @"BGMModifierCheckCell";
BGMModifierCheckCell *cell = nil;
cell = (BGMModifierCheckCell *);
如果(细胞 == 零){
NSArray* topLevelObjects = [ loadNibNamed:modifierCheckCell owner:self options:nil];
for (id currentObject in topLevelObjects) {
if (]) {
单元格 = (BGMModifierCheckCell *)currentObject;
休息;
}
}
}
cell.selectionStyle = UITableViewCellSelectionStyleNone;
NSArray *optionIds = [[ objectForKey:@"optnItem"] objectAtIndex:indexPath.row];
BGMOptnCats *optnCat = objectForKey:@"optnCatId"]];
[optionIds enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
__block int optnTag = ;
BGMItemDayOptns *item = ;
[item.optns.optnLangs enumerateObjectsUsingBlock:^(id obj, BOOL *stop) {
BGMOptnLangs *lang = (BGMOptnLangs *)obj;
if () {
NSString *optn = ;
if () {
RadioButton *rb1 = [ initWithFrame:CGRectMake(0, 0, 200, 40)];
;
rb1.delegate =self ;
如果(idx == 0){
;
} else if (idx == 1) {
;
} else if (idx == 2) {
;
}
} else if () {
SSCheckBoxView *checkBox = [ initWithFrame:CGRectMake(0, 0, 200, 40) 样式:kSSCheckBoxViewStyleMono 选中:NO];
checkBox.tag = optnTag;
;
[复选框 setText:@""];
[复选框 setText:optn];
如果(idx == 0){
;
} else if (idx == 1) {
;
} else if (idx == 2) {
;
}
}
}
}];
}];
返回单元格;
}</pre></p>
<p style="font-size: 20px;">关于ios - 滚动后tableview内的数据混淆了,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/18777530/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/18777530/
</a>
</p>
页:
[1]