正如标题所说。这可能吗?继承我的代码:
离开视图时......
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
defaults.setObject(buttonArray, forKey: "buttonArray")
defaults.synchronize()
}
进入......
override func viewDidLoad() {
super.viewDidLoad()
if let isAppAlreadyLaunchedOnce = defaults.stringForKey("isAppAlreadyLaunchedOnce") {
print("View already launched")
let savedArray = defaults.arrayForKey("buttonArray")
buttonArray = savedArray as! [UIButton]
} else {
print("View launched first time")
buttonArray = (button1, button2, button3, button4)
}
//rest of code where button array gets changed
}
在调用prepareForSegue时收到错误SIGNAL SIGABRT
答案 0 :(得分:0)
你不能这样做。用户默认值是属性列表,您只能在其中存储以下类型(数组和字典也只能包含这些类型):
– NSArray
– NSData
– NSDictionary
– NSNumber
– NSString`
您可以考虑将按钮编码为NSData,但在我看来这是一个糟糕的设计。用户默认值应该用于应用程序重新启动后应该保留的用户首选项。您需要重新创建这些按钮的哪些信息?是否需要在应用程序被杀后或仅在您重新进入此屏幕时才能工作?