2013-04-14 2 views
1

Я создал пользовательскую ячейку с UISwitch.Сброс свойств ячейки после удаления ячейки?

Класс пользовательских клетка обладает свойством:

@property (nonatomic, assign) BOOL boolValue; 

Важной частью клетки инициализационные гласит:

self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 
if (self) { 
    UISwitch *boolSwitch = [[UISwitch alloc] init]; 
    boolSwitch.on = self.boolValue; 
     //self.boolValue = boolSwithch.on /** tried as well **/ 
    [boolSwitch addTarget:self action:@selector(switched:) forControlEvents:UIControlEventValueChanged]; 
    self.accessoryView = boolSwitch; 
} 
return self; 

и переключился: метод:

- (void)switched:(id)boolSwitch { 
    self.boolValue = ((UISwitch *)boolSwitch).on; 
} 

Теперь это все отлично работает, я могу получить boolValue от делегатов tableview без проблем , то есть, если я не говорю о том, что после качания переключателя появляется модальное представление. Когда я вернусь в tableView, cell.boolValue снова будет установлен по умолчанию (NO).

Хотя визуальное состояние самого переключателя остается верным, свойство ячейки нет.

Я думаю, что собственность не сохраняется после того, как ее уволили?

ответ

2

Сохранение значения должно быть заданием объекта модели подложки, а не самой ячейки. Один и тот же объект ячейки может повторно использоваться несколько раз с помощью табличного представления, и вы всегда хотите установить его правильное состояние в tableView:cellForRowAtIndexPath: из объекта подложки. Таким образом, повторно используемая ячейка могла иметь boolValue, установленную в YES или NO ранее, но вы всегда устанавливали бы cell.boolSwitch.on в и попадали в нужное состояние.

Вашего метода switched: где вы обновите состояние объекта Подложки:

- (void)switched:(UISwitch*)boolSwitch { 
    self.modelObject.someBoolProperty = boolSwitch.on; 
} 
+0

Бинго спасибо, я испортил мой 'cellForAtIndexPath' – amcc

Смежные вопросы