initwithCoder и encodewithCoder на iOS

Я пытался сохранить состояние UIButton используя encodeWithCoder:

- (void)encodeWithCoder:(NSCoder *)encoder
{  
  [coder encodeObject:self.button1 forKey:@"button1"];
}

мой initWithCoder: выглядит так:

-(void) initWithCoder:(NSCoder*)decoder
{
  self.button1 = [coder decodeObjectForKey:@"button1"];
}

С button1 Я сохраняю состояние цвета, ориентации, угла и т. Д. И могу восстановить его с помощью initwithCoder; но когда я нажимаю на кнопку, она не отвечает. Внешний вид был восстановлен, но IBAction больше не называется.

1 ответ

Решение

Если вы вручную создаете / восстанавливаете свои кнопки, тогда вы убираете автоматическую настройку, которую выполняет загрузка InterfaceBuilder/NIB.

Вам нужно будет явно добавить целевое действие к кнопке. У вас также есть некоторые синтаксические ошибки в вашем примере кода.

-(void) initWithCoder:(NSCoder*)decoder
{
  self.button1 = [coder decodeObjectForKey:@"button1"];
  [self.button1 addTarget:self action:@selector(yourIBActionMethod:) forControlEvents:UIControlEventTouchUpInside];
}
Другие вопросы по тегам