Thursday, 12 September 2013

Data inside tableview are mixed-up after scrolling

Data inside tableview are mixed-up after scrolling

I've read many questions and tried the solutions but I still couldn't
resolve the problem with my tableview.
After scrolling, the data in the rows of the tableview got interchanged
and sometimes missing.
Here's my code:
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *modifierCheckCell = @"BGMModifierCheckCell";
BGMModifierCheckCell *cell = nil;
cell = (BGMModifierCheckCell *)[tableView
dequeueReusableCellWithIdentifier:modifierCheckCell];
if (cell == nil) {
NSArray* topLevelObjects = [[NSBundle mainBundle]
loadNibNamed:modifierCheckCell owner:self options:nil];
for (id currentObject in topLevelObjects) {
if ([currentObject isKindOfClass:[UITableViewCell class]]) {
cell = (BGMModifierCheckCell *)currentObject;
break;
}
}
cell.selectionStyle = UITableViewCellSelectionStyleNone;
NSArray *optionIds = [[[arrayInsideDict
objectAtIndex:indexPath.section] objectForKey:@"optnItem"]
objectAtIndex:indexPath.row];
BGMOptnCats *optnCat = [BGMOptnCats
MR_findFirstByAttribute:@"iOptnCatId" withValue:[[arrayInsideDict
objectAtIndex:indexPath.section] objectForKey:@"optnCatId"]];
[optionIds enumerateObjectsUsingBlock:^(id obj, NSUInteger idx,
BOOL *stop) {
__block int optnTag = [obj intValue];
BGMItemDayOptns *item = [BGMItemDayOptns
MR_findFirstByAttribute:@"iItemDayOptnId" withValue:obj];
[item.optns.optnLangs enumerateObjectsUsingBlock:^(id obj,
BOOL *stop) {
BGMOptnLangs *lang = (BGMOptnLangs *)obj;
if ([lang.sLangCode isEqualToString:@"en"]) {
NSString *optn = [NSString stringWithFormat:@"%@",
lang.sOptnName];
if ([optnCat.sOptnType isEqualToString:@"single"]) {
RadioButton *rb1 = [[RadioButton
alloc] initWithFrame:CGRectMake(0, 0, 200, 40)];
[rb1 setGroupID:indexPath.section AndID:optnTag
AndTitle:optn];
rb1.delegate = self;
if (idx == 0) {
[cell.firstOption addSubview:rb1];
} else if (idx == 1) {
[cell.secondOption addSubview:rb1];
} else if (idx == 2) {
[cell.thirdOption addSubview:rb1];
}
} else if ([optnCat.sOptnType
isEqualToString:@"multiple"]) {
SSCheckBoxView *checkBox = [[SSCheckBoxView alloc]
initWithFrame:CGRectMake(0, 0, 200, 40)
style:kSSCheckBoxViewStyleMono checked:NO];
checkBox.tag = optnTag;
[checkBox setStateChangedTarget:self
selector:@selector(checkBoxViewChangedState:)];
[checkBox setText:@""];
[checkBox setText:optn];
if (idx == 0) {
[cell.firstOption addSubview:checkBox];
} else if (idx == 1) {
[cell.secondOption addSubview:checkBox];
} else if (idx == 2) {
[cell.thirdOption addSubview:checkBox];
}
}
}
}];
}];
}
return cell;
}
Please help me out with this. Thank you!!! :)

No comments:

Post a Comment