ビューコントローラの1つに複数のUISwitchがあり、別のビューコントローラがIf/andステートメントのUISwitchの値にアクセスできるようにしたい。Objective-cでこれを行うにはどうすればよいですか?
2 に答える
これは、View Controller 間に不要な依存関係を作成するため、悪い考えです。
それでもやりたい場合は、スイッチを使用して最初のView Controllerの参照を2番目のView Controllerに渡すだけです。次に、2 番目のビュー コントローラーで、対応する UISwitch のon
プロパティにアクセスします。
ただし、その方法に進む代わりに、各 UISwitch のブール状態を保持するカスタム クラスを作成することを強くお勧めします。このクラスのインスタンスは、シングルトンであるか、アプリケーション デリゲートに含まれている可能性があります。両方のアプローチでそれを行う方法については、この回答を参照してください。
UISwitch はデータ モデル内のプロパティを表すための手段にすぎないため、カスタム クラスの方が適しています。また、明日 UISwitch を別の派手なコントロールに置き換えたとしても、2 番目のビュー コントローラーは引き続き動作するはずです。どちらのビュー コントローラーにも、このカスタム クラスのオブジェクトへの参照があります。変更があるたびに、最初のコントローラーがこのオブジェクトを更新します。
クラス インターフェイスは次のようになります。
@interface DataValues : NSObject {
BOOL first;
BOOL second;
BOOL third;
}
@property BOOL first;
@property BOOL second;
@property BOOL third;
あなたはおそらくそれをしたくないでしょう。2番目のViewControllerに、最初にスローされたスイッチに基づいて異なる動作を持たせたい場合は、スイッチをユーザーデフォルトにバインドする必要があります。これは、アプリのどこからでも読み取ることができます。