У меня есть 3 раздела в виде таблицы и только в средней секции, раздел 2, для отображения различных ячеек. В разделах 1 и 3 показана только одна ячейка, и я делаю их непривлекательными, так как я хочу отображать на них кнопки и текст. Я сделал их, и он работал нормально, пока я не сделал разделы 1 и 3 userInteractionEnabled = NO.Взаимодействие с пользователем Включено изменение цвета текста и способности щелчка других разделов
Код: Я знаю, что могу сделать этот объект ориентированным, и это было так, но как только эта проблема возникла, я попытался сделать это по-другому, но это все равно.
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
UIView *selectedBackgroundView = [[UIView alloc] initWithFrame:CGRectZero];
selectedBackgroundView.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.1];
cell.selectedBackgroundView = selectedBackgroundView;
if(cell==nil) { NSLog(@"Cell is nil");}
}
if(indexPath.section == 0)
{
cell.textLabel.text = nil;
cell.accessoryView = nil;
cell.detailTextLabel.text = nil;
dosageButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
amountButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[dosageButton addTarget:self action:@selector(showDosages:) forControlEvents:UIControlEventTouchUpInside];
[amountButton addTarget:self action:@selector(showAmount) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:dosageButton];
[self.view addSubview:amountButton];
cell.userInteractionEnabled = NO;
return cell;
}
else if (indexPath.section == 1)
{
if (self.nameMutable.count != 0)
{
cell.textLabel.text = [self.nameMutable objectAtIndex:indexPath.row];
cell.detailTextLabel.text = [NSString stringWithFormat:@"$%@",[self.priceMutable objectAtIndex:indexPath.row]];
cell.accessoryView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"chevron"]];
return cell;
}
else
{
//Empty for now. Waiting for data fetching to finish
return cell;
}
}
else if (indexPath.section == 2)
{
cell.userInteractionEnabled = NO;
cell.accessoryView = nil;
cell.detailTextLabel.text = nil;
return cell;
}
else
{
NSLog(@"Something went wrong");
return cell;
}
}
По какой-то причине мой стол вид ячейки в разделе 1, где предполагается быть кликабельна цвет меняется на темно-серый и не кликабельны больше. Обычно это ячейка 3 и ячейка 10. Кроме того, когда я прокручиваю вниз, а раздел 0 больше не отображается, а затем я прокручиваю назад, а раздел 0 виден, некоторые из ячеек становятся неаккуруемыми и цвет текста изменяется.
Кроме того, как я могу создать определенную ячейку внутри раздела 1, имеют большую высоту, потому что текст слишком длинный для отображения, и он начинает отображать «...» или охватывает детальную тексту. Заранее спасибо.
Зачем вам помещать раздел 0 внутри оператора if, когда вы делаете ячейки? ('if (cell == nil) {раздел 0 здесь}'?) – Chris
Потому что, если вы добавляете subviews в определенную ячейку, тогда лучше сделать это внутри оператора if, чтобы он был добавлен только в том случае, если новая ячейка создано. В противном случае при прокрутке у вас будут другие ячейки в таблице, повторно использующие ячейку, и кнопки начнут появляться в строках, которые вам не нужны. – sooper
Я пробовал делать это, но камера и кнопка не загружались, вот почему я спрашивал. Любая подсказка, почему она не появляется? – Chris