Как упоминалось в комментариях, ячейка с регулятором громкости может повторно использоваться для ячеек, не относящихся к объему, поэтому ее необходимо удалить, если она уже существует.Пример того, как это можно сделать:
- (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] autorelease];
}
//remove the volume control (which we tagged as 10) if it already exists...
UIView *v = [cell.contentView viewWithTag:10];
[v removeFromSuperview];
cell.textLabel.text = @"some text";
if (indexPath.section == 7)
{
if (indexPath.row == 1)
{
cell.detailTextLabel.text = @"";
MPVolumeView *systemVolumeSlider = [[MPVolumeView alloc] initWithFrame:CGRectMake(100, 10, 200, 100)];
//set a tag so we can easily find it (to remove it)...
systemVolumeSlider.tag = 10;
[cell.contentView addSubview:systemVolumeSlider];
[systemVolumeSlider release];
return cell;
}
}
cell.detailTextLabel.text = @"detail";
return cell;
}
В ваших комментариях кажется, что регулятор громкости должен находиться только во 2-й строке 8-го раздела, поэтому пример написан таким образом.Изменить по необходимости.