0

ビューの状態を復元したいのですが、ビューに。がありUIPickerViewます。

UIPickerViewグラフィックコンポーネント、つまり背景のホイール画像があるように見えます。私はそれUIImageをアーカイブできないことを知っています。のような画像を含むものはすべて、エンコードする前にUIImageViewまず画像をに設定する必要があります。nil

ただし、準拠してUIPickerViewいます。NSCodingつまりencodeObject、動作するdecodeObjectはずです。

しかし、彼らはしません。つまり、エラーは発生しません。しかし、デコードした後、UIPickerView画像なしで取得します。見栄えが悪い!

これは、私が怒っていないことを証明するためのショットの前後です。

前

後

これで、現在のユーザー選択を保存し、ピッカーのメソッドを呼び出してビューを再作成できることがわかりましたselectRow。しかし、本当に、私は興味があります。UIPickerView NSCoding実際には準拠しておらず、背景のホイール画像を元に戻すためにこれ以上何もできないのに、なぜ準拠しているのですか?

4

1 に答える 1

1

あなたはあなた自身の質問に答えたようです。UIImageView準拠しNSCodingているが保存されない(明らかに画像が他の場所に保存されているため)ので、なぜ異なる動作UIImageを期待するのでしょうか?UIPickerView

私が読んだことから(決して行ったことはありませんが)、実際のビューではなく、状態(フレーム、可視性など)を保存するために使用されますNSCodingUIViewsAppleの側では少し一貫性がありませんが、私には論理的に思えます。UIViewライブラリ全体がすでにiOSにあるので、なぜすべてのデータを再シリアル化するのに時間とスペースを浪費するのでしょうか。

提案されたソリューションから得られる唯一のことは、ボイラープレートコード(ビューをリセットするため)が少し少なく、オブジェクトの読み取り/書き込みが遅くなる可能性があることです(画像を考慮する必要があるため)

于 2011-10-26T20:19:12.043 に答える