Я динамически создал UITableView
и пытался добавить UILabel
и UIButton
, но когда мы откроем UIViewController
, все будет правильно, и когда я попытаюсь прокрутить все, все перепуталось.Содержимое UITableView сливается при прокрутке?
Динамическое добавление UITextFields
и UIButtons
на основе идентификатора поля, который я получаю с сервера.
вот мой cellForRowAtIndexPath
метод
Обновления
- (UITableViewCell *)tableView:(UITableView *)tableView1 cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *MyIdentifier;
if([[[selectedTabFields valueForKey:@"type"] objectAtIndex:indexPath.row] isEqualToString:@"VARCHAR"]){
MyIdentifier = @"CharCell";
}else if([[[selectedTabFields valueForKey:@"type"] objectAtIndex:indexPath.row] isEqualToString:@"INTEGER"]){
MyIdentifier = @"IntCell";
}else{
MyIdentifier = @"IntCell11";
}
cell.textLabel.text = Nil;
cell= [tableView1 dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil)
{
cell = [[dynamicCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:MyIdentifier];
}
cell.selectionStyle=UITableViewCellSelectionStyleNone;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.accessoryType = UITableViewCellAccessoryNone;
//cell.clipsToBounds=YES;
if([[[selectedTabFields valueForKey:@"type"] objectAtIndex:indexPath.row] isEqualToString:@"VARCHAR"]){
[cell.contentView addSubview:[self getLabel:indexPath.row]];
[cell.contentView addSubview:[self getVarcharTextfield:indexPath.row:[[selectedTabFields valueForKey:@"value"] objectAtIndex:indexPath.row]]];
}else if([[[selectedTabFields valueForKey:@"type"] objectAtIndex:indexPath.row] isEqualToString:@"INTEGER"]){
[cell.contentView addSubview:[self getLabel:indexPath.row]];
[cell.contentView addSubview:[self getIntegerTextfield:indexPath.row:[[selectedTabFields valueForKey:@"value"] objectAtIndex:indexPath.row]]];
}else if([[[selectedTabFields valueForKey:@"type"] objectAtIndex:indexPath.row] isEqualToString:@"SINGLESELECT"]){
NSString *title=[[selectedTabFields valueForKey:@"name"]objectAtIndex:indexPath.row];
NSLog(@"single runing");
[cell.contentView addSubview:[self getSingleSelectLabel:indexPath.item :title]];
[cell.contentView addSubview:[self addView:indexPath.row :[dynamicOptionFields objectAtIndex:indexPath.row] :[[selectedTabFields valueForKey:@"value"] objectAtIndex:indexPath.row]]];
}else if([[[selectedTabFields valueForKey:@"type"] objectAtIndex:indexPath.row] isEqualToString:@"MULTISELECT"]){
NSLog(@"runing");
[cell.contentView addSubview:[self getLabel:indexPath.row]];
[cell.contentView addSubview:[self addMultiSelectView:indexPath.row:[dynamicOptionFields objectAtIndex:indexPath.row]:[[selectedTabFields valueForKey:@"value"] objectAtIndex:indexPath.row]]];
}
return cell;
}
Пожалуйста, проверьте Прилагаемый скриншоты
Когда я прокрутите вниз она станет так
Теперь он не сливается, но когда я прокручиваю вниз, я вижу повторяющиеся ячейки. Для например: я могу видеть мои первые строки несколько раз (в конце свитка)
если ([[[selectedTabFields valueForKey: @ "тип"] objectAtIndex: indexPath.row] isEqualToString: @ "INTEGER"]) { MyIdentifier = @ "IntCell"; } else { MyIdentifier = @ "IntCell"; } после проверки этих операторов буксировки оба имеют одинаковые идентификаторы, которые изменяют их однозначно – Smile
Грязный способ решить это будет 'cell = [tableView1 dequeueReusableCellWithIdentifier: nil];' Но я снова говорю, что это грязный путь. – rptwsthi
позвольте мне попробовать свои ответы – Bangalore