是否可以使用encodeObject存档UIPickerView?

时间:2011-10-19 11:20:42

标签: ios uipickerview nscoding

我想恢复我的视图状态,我的视图有UIPickerView

UIPickerView看起来像它有图形组件,即背景轮图像。我知道UIImage无法归档。任何包含图像的内容,例如UIImageView,您必须先将图像设置为nil,然后才能对其进行编码。

但是,UIPickerViewNSCoding兼容。这意味着encodeObjectdecodeObject应该有效。

他们不是。我的意思是,它们不会导致任何错误。但解码后,您将获得UIPickerView没有任何图像。它看起来不太好看!

这是一个前后镜头,只是为了证明我不会生气:

之前

Before

After

现在,我知道我可以简单地存储当前用户选择,并通过调用选择器的selectRow方法重新创建视图。但实际上,我很好奇。为什么UIPickerView NSCoding是否合规,如果它不是真的,你不能做任何进一步的事情来获得背景轮图像?

1 个答案:

答案 0 :(得分:1)

你似乎回答了自己的问题。 UIImageView符合NSCoding但尚未保存UIImage(很明显,因为图片已保存在其他地方),为什么您希望UIPickerView的行为有所不同?

从我读过的内容(虽然从未完成)NSCoding UIViews用于保存状态(框架,可见性等),而不是实际视图。虽然Apple有点不一致,但对我来说这似乎是合乎逻辑的,因为整个UIView库已经在iOS中了,为什么要浪费时间和时间。空间重新整理所有数据?

从您提出的解决方案中唯一可以获得的是样板代码(用于重置视图)并且有可能减慢对象的读/写速度(因为它必须考虑图像) )