0

私は2つのView Controllerとペン先を持っています。1 つのビュー コントローラーにトグル スイッチを設定し、ヘッダー ファイルでこれを宣言しました。

@public UISwitch *toggleSwitch;

次のようなプロパティとして公開します。

@property (nonatomic,retain) IBOutlet UISwitch *toggleSwitch;

スイッチもtoggleSwitchコンセントに繋ぎました。次に、このスイッチを他のView Controllerで次のように使用しました:

theViewControllerWhereIDeclaredTheSwitch.toggleSwitch.on = YES;

デフォルトでスイッチがオンになっているとすべてが正常に機能しましたが、スイッチをオフにすると、main.mファイルで「スレッド1:シグナルSIGABRT」という例外がスローされました。Xcode を使用しているときに、このエラーが頻繁に発生します。このエラーは、私のお尻にとって本当に苦痛です。助けてください。

4

2 に答える 2

5

複数の で UI 要素を共有しないでくださいUIViewControllers

より良いアプローチは、を共有するBOOLか、継承元の独自のオブジェクトで状態をカプセル化し、NSObjectそれを 2 間で渡すことUIViewControllersです。

于 2012-07-13T07:41:01.513 に答える
1

@wernerは正しいです。

コントローラーと関連付けられたビューをプログラミングするときは、NVC パターンを実装しています。アイデアは、ビューとデータを保持するモデルの間の頭脳であるこの Controller オブジェクトがあるということです。したがって、アプリケーションで実行する必要があるのは、スイッチの状態を共有することではなく、スイッチをトリガーするときにモデルの BOOL 値を更新し、2 つのコントローラーの値を知るためにモデルを 2 つのコントローラーと共有することです。

(CF:ウィキペディア

于 2012-07-13T08:11:29.383 に答える