iOS UISlider поблескивает при возврате к просмотру
В ящике стола у меня есть UISlider. Если я переместу ручку ползунка, вернусь к своему предыдущему виду, а затем вернусь к виду таблицы, ручка на ползунке вернется к нулю, но я вижу "ореол" ручки, куда я ранее тоже переместил ползунок,
Я очищаю контекстное представление объекта-слайдера в cellForRowAtIndexPath: и перезагружаю таблицу в viewDidAppear.
Кто-нибудь знает, как это исправить? Это довольно раздражает. Я положил код слайдера внизу, если это поможет.
// Setup slider
CGRect sliderFrame = CGRectMake(15, 56, 230, 0);
UISlider *slider = [[UISlider alloc] initWithFrame:sliderFrame];
slider.clearsContextBeforeDrawing = YES;
[slider addTarget:self action:@selector(sliderUpdated:) forControlEvents:UIControlEventValueChanged];
[slider addTarget:self action:@selector(sliderStopped:) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:slider];
[slider release];
Я ценю его! Спасибо!
1 ответ
Скорее всего, вы создаете новый UISlider
по старому UISlider
что дает эффект ореола.
Два возможных решения
Отметить
UISlider
когда вы добавляете его в ячейку.Подкласс
UITableViewCell
и добавитьUISlider
к его представлению содержимого и сохраните ссылку на него с помощью ивара.
Чтобы сделать 1, просто пометьте UISlider
когда вы добавляете его в contentView. Затем, когда вы снова получаете ячейку, вы сначала пытаетесь вернуть вид или создать его заново.
const int sliderViewTag = 99;
UISlider *slider = [cell.contentView viewWithTag:sliderViewTag];
if (!slider) {
CGRect sliderFrame = CGRectMake(15, 56, 230, 0);
slider = [[UISlider alloc] initWithFrame:sliderFrame];
slider.clearsContextBeforeDrawing = YES;
[slider addTarget:self action:@selector(sliderUpdated:) forControlEvents:UIControlEventValueChanged];
[slider addTarget:self action:@selector(sliderStopped:) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:slider];
[slider release]; slider = nil;
}
Хотя 2 немного сложнее, это мой предпочтительный метод, но я уверен, что есть несколько отличных примеров того, как это сделать. Есть несколько отличных документов от Apple, так что ознакомьтесь с ними. A Closer Look at Table-View Cells