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];
}