SwiftのViewControllerOneのボタンを使用してViewControllerTwoのImageViewを非表示にする必要があります。別のViewControllerのボタンを使用して画像を表示するSwift XCode
別のViewControllerで「imageView.hidden = true」を使用するにはどうすればよいですか?
お願いします。おかげ
SwiftのViewControllerOneのボタンを使用してViewControllerTwoのImageViewを非表示にする必要があります。別のViewControllerのボタンを使用して画像を表示するSwift XCode
別のViewControllerで「imageView.hidden = true」を使用するにはどうすればよいですか?
お願いします。おかげ
(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")
}
}
}
は、このことができますなら、私を知ってみましょう!
私は試しましたが、動作していません:/ありがとうと –
それは私にとって完璧に動作し、何も動作していない私のコードに関連するものはありません。私はあなたのプロジェクトで何をしているのかわかりませんが、それは私のせいだとは思わない –
他のView Controllerから1つのView Controllerのビューを変更しようとしないでください。それは悪いデザインです。代わりに、非表示にするイメージのビューコントローラに代理プロパティが必要です。他のView Controllerが呼び出すメッセージを定義するデリゲートプロトコルを作成します。これは非常に一般的なデザインパターンであり、学習する必要があります。
デリゲートのデザインパターンを示すチュートリアルが多数あります。
私が間違っていると私を訂正しますが、グローバル変数やUserDefaultsの代わりにDelegatesを使うのはもっと複雑ですか?簡単なテクニックがある場合、代議員の利点は何ですか? –
グローバル変数は悪い考えです。それらは密接にコンポーネントを結合し、再利用性を制限します。 UserDefaultsは、アプリの起動間に永続性を必要としない限り、「重い」ソリューションです。 –
はい、デリゲートを使用するとより多くの作業が可能になりますが、より洗練された、モジュール化された、再利用可能なデザインになります。 –
preopareforsegueを使用して別のビューコントローラでフラグを渡すだけで、イメージビューを非表示にすることができます。 – Sahil
解決策を確認してください –