Я использую TableView внутри ViewController. Существует два сценария, в которых есть 3 раздела и один, где есть 4.TableViewCell неправильно инициализируется
Когда приложение загружает значение по умолчанию - 3. Один из TableViewCells показывает другой ViewController, в котором пользователь делает выбор. Затем, используя обратную кнопку, они возвращаются к открытию VC, где таблица перезагружается.
Проблема возникает, когда пользователь перемещается из 4 разделов назад в 3. Как вы можете видеть в приведенном ниже коде, третий раздел (случай 2) реализует текстовый экран при отображении 4 разделов. Когда пользователь переместится на 3, текстовый элемент останется. Я предположил, что таблица начнется с нуля при перезагрузке. Вместо этого он сохраняет предыдущие настройки и добавляет новые настройки поверх.
Любые идеи, как остановить это? какой-то сброс?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
{
UITableViewCell *serverLocCell = [tableView dequeueReusableCellWithIdentifier:@"homeCell"];
if (sections == 3) {
switch (indexPath.section) {
case 0:
if ([testLocation isEqualToString:@""]) {
serverLocCell.textLabel.text = @"Choose location";
}
else {
serverLocCell.textLabel.text = testLocation;
}
serverLocCell.detailTextLabel.text = @"Change";
serverLocCell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
break;
case 1:
serverLocCell.textLabel.text = testType;
serverLocCell.detailTextLabel.text = @"Change";
serverLocCell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
break;
case 2:
serverLocCell.textLabel.text = @"Start Test";
serverLocCell.textLabel.textColor = [UIColor whiteColor];
serverLocCell.textLabel.textAlignment = NSTextAlignmentCenter;
serverLocCell.detailTextLabel.text = @"";
serverLocCell.accessoryType = UITableViewCellAccessoryNone;
serverLocCell.backgroundColor = [UIColor colorWithRed:0.0/255 green:102.0/255 blue:51.0/255 alpha:1.0];
break;
default:
break;
}
}
else {
switch (indexPath.section) {
case 0:
if ([testLocation isEqualToString:@""]) {
serverLocCell.textLabel.text = @"Choose location";
}
else {
serverLocCell.textLabel.text = testLocation;
}
serverLocCell.detailTextLabel.text = @"Change";
serverLocCell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
break;
case 1:
serverLocCell.textLabel.text = testType;
serverLocCell.detailTextLabel.text = @"Change";
serverLocCell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
break;
case 2:
if ([testType isEqualToString:@"Published App Test"]) {
publishedAppTextField = [[UITextField alloc]init];
publishedAppTextField.tag = 1;
[publishedAppTextField addTarget:self
action:@selector(textFieldDidChange:)
forControlEvents:UIControlEventEditingChanged];
serverLocCell.textLabel.text = @"";
serverLocCell.accessoryType = UITableViewCellAccessoryNone;
publishedAppTextField.frame = CGRectMake(7, 10, 300, 30);
publishedAppTextField.clearsOnBeginEditing = YES;
publishedAppTextField.delegate = self;
publishedAppTextField.returnKeyType = UIReturnKeyDone;
[serverLocCell setSelectionStyle:UITableViewCellSelectionStyleNone];
[serverLocCell.contentView addSubview:publishedAppTextField];
serverLocCell.backgroundColor = [UIColor whiteColor];
break;
}
else {
break;
}
case 3:
serverLocCell.textLabel.text = @"Start Test";
serverLocCell.textLabel.textColor = [UIColor whiteColor];
serverLocCell.textLabel.textAlignment = NSTextAlignmentCenter;
serverLocCell.detailTextLabel.text = @"";
serverLocCell.accessoryType = UITableViewCellAccessoryNone;
serverLocCell.backgroundColor = [UIColor colorWithRed:0.0/255 green:102.0/255 blue:51.0/255 alpha:1.0];
break;
default:
break;
}
}
return serverLocCell;
}
Спасибо,
как вы отслеживании 'sections'? – KDaker
Подсказка: ячейки перерабатываются. –