Я работаю над таблицей, и я новичок в динамическом создании ячеек (раньше я создавал их с помощью IB, а затем связывал их с контроллером ячеек и т. Д.).
Все отлично работает, и ожидаемые массивы обновляются должным образом, но когда я запускаю [self.tableview reloadData], программа просто перерисовывает новые значения поверх старых ячеек.например, если в ячейке uilabel есть значение «TEST CELL», когда я обновляю данные до «CELL TEST» и запускаю reloadData, uilabel выглядит так, как будто две метки расположены друг над другом, и оба значения видны.(это похоже на создание двух uilabel с точно таким же местоположением и одинаковым размером и установкой их значений)
и это событие происходит каждый раз, когда я запускаю reloadData, при каждой перезагрузке программа выглядит так, как будто она добавляет еще одну uilabel поверх старойодин.вот мой код:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
UILabel *lblText1 = [[UILabel alloc] initWithFrame:CGRectMake(30, 5, 130, 30)];
lblText1.adjustsFontSizeToFitWidth = YES;
lblText1.backgroundColor = [UIColor clearColor];
lblText1.text = [lblText1Array objectAtIndex:indexPath.row];
[cell addSubview:lblText1];
[lblText1 release];
if(indexPath.row<3)
{
UILabel *lblText2 = [[UILabel alloc] initWithFrame:CGRectMake(170, 5, 130, 30)];
lblText2.adjustsFontSizeToFitWidth = YES;
lblText2.backgroundColor = [UIColor clearColor];
lblText2.text = nil;
lblText2.text = [spParameters objectAtIndex:indexPath.row];
[cell addSubview:lblText2];
[lblText2 release];
}
else if(indexPath.row==3){
UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(170, 7, 130, 30)];
textField.adjustsFontSizeToFitWidth = YES;
textField.borderStyle = UITextBorderStyleRoundedRect;
textField.placeholder = @"please insert value";
textField.textAlignment = UITextAlignmentCenter;
textField.delegate = self;
textField.text = [spParameters objectAtIndex:indexPath.row];
[cell addSubview:textField];
[textField release];
}
else if(indexPath.row == 4)
{
UISwitch *gSwitch = [[UISwitch alloc] initWithFrame:CGRectMake(170, 7, 130, 30)];
[gSwitch setOn:FALSE];
[gSwitch addTarget: self action: @selector(switchValueChanged:) forControlEvents:UIControlEventValueChanged];
[cell addSubview:gSwitch];
[gSwitch release];
}
// Configure the cell...
return cell;
}
Я освобождаю компоненты после добавления их в подпредставления, и я думаю о том, что с повторным идентификатором что-то не так ...
Спасибо за помощь.