2017-02-04 9 views
-1

SwiftのViewControllerOneのボタンを使用してViewControllerTwoのImageViewを非表示にする必要があります。別のViewControllerのボタンを使用して画像を表示するSwift XCode

別のViewControllerで「imageView.hidden = true」を使用するにはどうすればよいですか?

お願いします。おかげ

+0

preopareforsegueを使用して別のビューコントローラでフラグを渡すだけで、イメージビューを非表示にすることができます。 – Sahil

+0

解決策を確認してください –

答えて

0

(viewController1で)あなたのボタン機能でこれを試してみてください:

@IBAction func yourButtonFunction(_ sender: AnyObject){ 
let defaults = UserDefaults.standard 
defaults.set(true, forKey: "isImageHidden") 
} 

そしてviewController2で

、これを追加します。

override func viewDidAppear(){ 
    super.viewDidAppear(true) 
    if UserDefaults.standard.value(forKey: "isImageHidden") != nil{ 
      let condition = UserDefaults.standard.value(forKey: "isImageHidden") as! Bool 
      if condition{ 
       //should be hidden 
       self.imageView.isHidden = true 
       UserDefaults.standard.set(false, forKey: "isImageHidden") 
      } 
    } 
} 

は、このことができますなら、私を知ってみましょう!

+0

私は試しましたが、動作していません:/ありがとうと –

+0

それは私にとって完璧に動作し、何も動作していない私のコードに関連するものはありません。私はあなたのプロジェクトで何をしているのかわかりませんが、それは私のせいだとは思わない –

0

他のView Controllerから1つのView Controllerのビューを変更しようとしないでください。それは悪いデザインです。代わりに、非表示にするイメージのビューコントローラに代理プロパティが必要です。他のView Controllerが呼び出すメッセージを定義するデリゲートプロトコルを作成します。これは非常に一般的なデザインパターンであり、学習する必要があります。

デリゲートのデザインパターンを示すチュートリアルが多数あります。

+0

私が間違っていると私を訂正しますが、グローバル変数やUserDefaultsの代わりにDelegatesを使うのはもっと複雑ですか?簡単なテクニックがある場合、代議員の利点は何ですか? –

+0

グローバル変数は悪い考えです。それらは密接にコンポーネントを結合し、再利用性を制限します。 UserDefaultsは、アプリの起動間に永続性を必要としない限り、「重い」ソリューションです。 –

+0

はい、デリゲートを使用するとより多くの作業が可能になりますが、より洗練された、モジュール化された、再利用可能なデザインになります。 –

関連する問題