0

我有一个应用程序,我需要一直跟踪最后按下的按钮。所以我实现了这个方法:

-(void) lastButtonPressed: (id)sender
{
    lastButtonPressed = (UIButton *)sender;
}

然后,当按下任何按钮时,我会调用:

[self lastButtonPressed = xButton];

完美运行。但是现在我正在归档我的应用程序中的所有对象,当视图消失或关闭然后取消归档它并且 UIButton 不符合 NSCopying 或 NSCoding 时。我读过我可以继承 UIButton 并定义方法,但我被困在那里。

因此,当我的应用关闭或视图消失时,我想保存 lastButtonPressed。

我创建了一个名为 BIDPersistence 的新类来保存我的归档数据。在我的应用程序的视图控制器中,我有一个 saveData 方法来保存我的数据。我在下面显示的最后一行出现错误,因为 UIButton 不符合要求。

BIDPersistence *persistence = [[BIDPersistence alloc] init];
    persistence.field1 = [NSNumber numberWithDouble:double1];
    persistence.field2 = [NSNumber numberWithDouble:double2];
    persistence.field3 = display.text;
    persistence.field4 = tapeDisplay.text;
    persistence.field5 = [NSNumber numberWithBool:continueTape];
    persistence.field6 = [NSNumber numberWithBool:newDouble];
    persistence.field7 = lastButtonPressed;

任何帮助表示赞赏。

4

2 回答 2

1

听起来您不必保存实际的按钮,只需知道最后按下的是哪个按钮。为此,您可以使用 NSUserDefaults,它可以节省一些小知识,而无需设置 Core Data 等。我建议给每个按钮一个唯一的标签(在界面生成器中,只是一个 int)然后这样做:

[[NSUserDefaults standardUserDefaults] setInt:[lastButton tag] forKey:@"LastButtonPressed"];

稍后您可以使用 检索按钮viewWithTag:

于 2012-02-24T23:15:57.053 回答
0

你不能真正继承子类UIButton。它不是一个单一的类,而是,正如他们所说,一个UIKit基于UIButton's选择的类集群+ (id)buttonWithType:(UIButtonType)buttonType

也就是说,它确实(似乎)符合NSCoding(只是阅读文档;我不知道这些NSCoding东西是如何工作的。)

于 2012-02-24T22:28:13.467 回答