2016-09-28 11 views
1

私は奇妙な質問があります。 SOやGoogleのどちらでも検索で解決策を見つけることができませんでした。コードを介してInterface Builderのアイテムを永久に非表示にする

UIView私のUIViewControllerには、ストーリーボードで主導しています。 このUIViewは、Interface Builder経由で非表示に設定されています。

特定のロジックに基づいて、私はこれを明らかにする必要がありますUIView

かなり簡単:myView.isHidden = false

問題は毎回その私のUIViewController負荷である、それは[表示] - を国連が-隠し、再び非表示にビューを設定するよう-such前に起こっている何よりも優先されます。

恒久的に非表示にするスマートな方法がありますか?値を保存して毎回ViewWillAppearに読み込むUserDefaultsに行くべきですか?

ありがとうございます。

注:私は************* Swift3構文

******************* EDITでコーディングしています******

もっと明確にするには 専用のストーリーボードファイルに置かれたカスタムポップアップがたくさんあります。各ポップアップはUIViewControllerです。

これらのポップアップは、基本的に業績ポップアップです。彼らは3つの星を持っています。それらはすべてデフォルトで隠されています(3つのUIImageViewのIBプロパティを介して)。

アプリに沿って、ユーザーがある種の業績に達すると、関連するUIViewControllerをそのストーリーボードファイルから呼び出し、関連する達成された星を表示します(非表示にする)。ちょうどそれのように。

メインVC:関連クラスファイルで

let viewController = UIStoryboard(name: "AchievementsPopUp", bundle: nil).instantiateViewController(withIdentifier: "Category1PopUp") 
viewController.modalPresentationStyle = .overCurrentContext 
self.present(viewController, animated: true, completion: nil) 

は、私は、コードを経由してスターアン隠してるし、ユーザに提示します。ユーザーがpopupVCをメインのものに戻すと、そのUIImageViewの "un-hide"プロパティが失われます。 私はUserDefaultsのプロパティを使って解決しましたが、うまくいきます。 問題は、15種類のプロパティ(それぞれ3つの星がある5つの画面)を作成し、少し乱雑になった関連コードを管理する必要があったことです.- スマートなソリューションがあれば、実装してもよろしいでしょうか。

+1

シーンがストーリーボードから読み込まれるたびに、プロパティはストーリーボードごとに設定されます。 'viewDidLoad'にいくつかのコードを書いて、必要に応じてビューを隠すか、再表示する必要があります。 – Paulw11

+0

ありがとうございます。@ Paulw11これはまさに私が「回避策」としてやっていたものでした。しかし、それは回避策ではなく、通常の動作であるように見えます。 – Alex

答えて

0

Apple's documentation for Preserving and Restoring Stateをご覧ください。

保存と復元のプロセスはほとんど自動ですが、あなたのアプリのどの部分を保存するかをiOSに伝える必要があります。アプリケーションのビューコントローラを保存する手順は、次のとおりです。

  1. (必須)設定を保存するビューコントローラにリストア識別子を割り当てます。 「保存のためのビューコントローラーのタグ付け」を参照してください。
  2. (必須)起動時に新しいView Controllerオブジェクトを作成または検索する方法をiOSに指示します。起動時にView Controllerを復元するを参照してください。
  3. (オプション)各View Controllerに対して、そのView Controllerを元の設定に戻すために必要な特定の構成データを格納します。 View Controllerの状態のエンコードとデコードを参照してください。
+0

@piccianoのお返事ありがとうございます。 私は100%確信しているわけではありません。状態の設定は、いつあなたのアプリがバックグラウンドになるか、またはメモリリークを防ぐために停止しているかのようなものです。そのコンポーネントを復元するとき(UIも)復元ポイントに基づいて再構築されたフォームです。 私の場合、私は決してアプリを離れることはありません。アプリのライフサイクル中に同じストーリーボードを読み込むだけ - > UIViewControllerの回数が増えます。たぶん私の質問は100%明確ではなかった、私はいくつかの例で編集しようとします。 – Alex

関連する問題