2016-11-16 11 views
0

私のアプリでラベルの表示状態を保持して復元する方法を理解しようとしていましたが、私の人生の間、 。すぐにラベルの状態を復元する方法3

私は、Interface Builderで「使用ストーリーボードID」をチェックすることにより、ビューコントローラの復旧IDのセットを持っている(して使用するために提供ストーリーボードIDがあります)。私はshouldSaveApplicationStateshouldRestoreApplicationState関数をAppDelegateファイルに追加してtrueを返します。

ここで私が立ち往生しようとしているのは、View Controllerの迅速なファイルです。私はそれが見えてくるときにそれをバックデコードするoverride func decodeRestorableState(with coder: NSCoder)を使用する方法を、次に表示状態をエンコードするためにoverride func encodeRestorableState(with coder: NSCoder)を使用してする方法を見つけ出すことはできません。

私は3つのラベルを隠すことから始めます(viewDidLoadはすべてをisHidden = trueに設定します)。次に、タップされたボタンに応じて、適切なラベルを表示するように設定します(例:isHidden = false)。ユーザーがアプリを終了すると、変更されたラベルがアプリに戻ったときに復元されるように表示されるようにします。

私は、オブジェクトの種類ごとに次のコードを見つけた:

override func decodeRestorableStateWithCoder(coder: NSCoder) { 

    // retrieve profile ID so that we can fetch entire profile 
    profileID = Int(coder.decodeIntegerForKey(“profileID")) 

    //image data 
    if let imageData = coder.decodeObjectForKey("image") as? NSData { 
     profileImageView.image = UIImage(data: imageData) 
    } 
    // name 
    if let name = coder.decodeObjectForKey("name") as? String { 
     nameTextField.text = name 
    } 

    super.decodeRestorableStateWithCoder(coder) 
} 

をしかし、私はvisibilityプロパティで動作するようにこれらのオブジェクト型のいずれかを変換する方法を見つけ出すことはできませんか?

助けてください、これは私を夢中にしています!このような単純なことのようです...ありがとう!このような

答えて

0

何かがトリックを行う必要があります。

override func encodeRestorableState(with coder: NSCoder) { 
    coder.encode(button1.isHidden, forKey: "button1") 
    coder.encode(button2.isHidden, forKey: "button2") 
    coder.encode(button3.isHidden, forKey: "button3") 
    super.encodeRestorableState(with: coder) 
} 

override func decodeRestorableState(with coder: NSCoder) { 
    button1.isHidden = coder.decodeBool(forKey: "button1") 
    button2.isHidden = coder.decodeBool(forKey: "button2") 
    button3.isHidden = coder.decodeBool(forKey: "button3") 
    super.decodeRestorableState(with: coder) 
} 
関連する問題