在iOS上使用initwithCoder和encodewithCoder

时间:2012-09-10 01:52:55

标签: ios initwithcoder

我尝试使用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 个答案:

答案 0 :(得分:1)

如果您手动创建/恢复按钮,那么您将取消InterfaceBuilder / NIB加载为您执行的自动设置。

您需要明确地将目标操作添加到按钮。 您的示例代码中也存在一些语法错误。

-(void) initWithCoder:(NSCoder*)decoder
{
  self.button1 = [coder decodeObjectForKey:@"button1"];
  [self.button1 addTarget:self action:@selector(yourIBActionMethod:) forControlEvents:UIControlEventTouchUpInside];
}