ビューコントローラ間の通信
-
21-09-2019 - |
質問
私の見解コントローラの一つは、いくつかのUISwitchesを持っている、と私は別のビューコントローラがあれば/と文のUISwitchesの値にアクセスできるようにしたいです。どのように私はObjective-Cでこれを行うのですか?
解決
あなたはおそらくそれを行うにはしたくありません。あなたが最初に投げスイッチに基づいて異なる動作を持っているために、第2のViewControllerをしたい場合は、あなただけのアプリのどこにでも読むことができ、ユーザデフォルトにスイッチをバインドする必要があります。
他のヒント
これは悪い考えです。
あなたはまだそれをしたい場合は、単に第2のビューコントローラへのスイッチで最初のビューコントローラの参照を渡します。次に、2番目のビューコントローラにだけ対応するUISwitchのon
プロパティにアクセスします。
しかし、代わりにそのルートを行くの、私は強くあなたが各UISwitchのブール状態を保持するカスタムクラスを作成することを示唆しています。このクラスのインスタンスは、いずれかのシングルトン、またはアプリケーションデリゲートに含まれている可能性があります。このに答えるhref="https://stackoverflow.com/questions/1123920/how-do-i-shared-an-object-between-uiviewcontrollers-on-iphone/1125364#1125364">を参照してください。両方のアプローチでそれを行う方法について説明します。
UISwitchは、データモデルにいくつかのプロパティを表現するだけの方法であるため、カスタムクラスが良いです。そして、明日場合は、別の空想にUISwitchを置き換えます 制御は、第2のビューコントローラは、まだ動作し続けるべきです。どちらのビューコントローラは、このカスタムクラスのオブジェクトへの参照を持っています。変更があるたびに、第1のコントローラは、このオブジェクトを更新します。
クラスインターフェイスは、このようなものになる可能性があります:
@interface DataValues : NSObject {
BOOL first;
BOOL second;
BOOL third;
}
@property BOOL first;
@property BOOL second;
@property BOOL third;