Почему мое изображение большого пальца UISlider отображается несколько раз и не исчезает, как должно?

Этот слайдер имеет: http://gorgando.com/possessSlider.jpg

Всякий раз, когда я вхожу в «режим редактирования» для табличного представления или выхожу из «режима редактирования», на месте большого пальца появляется дублирующееся изображение большого пальца. Теперь он постоянно ведет себя таким образом. Если я переключаюсь из режима редактирования взад и вперед, я получаю много изображений большого пальца, как показано на скриншоте.

Это код, который я использую для создания ползунка (в методе cellForRowAtIndexPath):

CGRect frame = CGRectMake(20, 42.0, 280.0, 22);
self.slider = [[UISlider alloc] initWithFrame:frame];
[self.slider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventValueChanged];
self.slider.continuous = YES;
self.slider.minimumValue = 0.0;
self.slider.maximumValue = 5.0;
self.slider.value = 0.0;
[[interestCell contentView] addSubview:self.slider];

Цените любые мысли, которые могут у вас возникнуть!

[Я только что отредактировал / обновил это, чтобы отразить вопросы / предложения, которые я получил, но проблемы все еще возникают].


person Brad    schedule 28.05.2010    source источник
comment
Из какого метода этот фрагмент кода?   -  person ACBurk    schedule 29.05.2010
comment
cellForRowAtIndexPath, потому что ползунок находится внутри tableviewcell. Этот конкретный фрагмент кода вызывается только один раз, когда подходит строка / раздел.   -  person Brad    schedule 01.06.2010
comment
Кстати, если ваш slider объявлен как retain, то у вас утечка памяти. (Вы сохраняете объект alloc'd, но не балансируете alloc с _5 _...)   -  person Dave DeLong    schedule 01.06.2010
comment
У меня он объявлен как сохраненный, но он также выпущен в моем dealloc (). Разве это не лучший способ сделать это?   -  person Brad    schedule 02.06.2010
comment
присвоив его свойству (self.slider = ...), он сохраняется дважды. Один раз вашим вызовом alloc, и еще раз установщиком (поскольку это сеттер retain). Вы выпускаете его только один раз за dealloc. Вероятно, вам следует назначить его локальной переменной UISlider*, настроить его, затем установить свойство с помощью локальной переменной, а затем освободить с помощью локальной переменной.   -  person Dave DeLong    schedule 04.06.2010


Ответы (2)


Попробуйте добавить его в contentView ячейки, а не в саму ячейку.

person coneybeare    schedule 28.05.2010
comment
Я добавил его в contentView, и единственная разница в том, что теперь одержимое поведение довольно стабильно. Каждый раз, когда я нажимаю кнопку редактирования, чтобы перевести таблицу в режим редактирования, я получаю дубликат изображения большого пальца, а также получаю его, когда выхожу из режима редактирования. Есть другие мысли? - person Brad; 01.06.2010

Наконец разобрался!

Мне пришлось переместить свой код в метод viewDidLoad, за исключением установки ползунка в contentView, что до сих пор происходит в методе cellForRowAtIndexPath. Какая странная проблема. Спасибо тем, кто помогал и комментировал!

person Brad    schedule 01.06.2010