ボタンのタッチからのアクションを、ファイルの所有者として機能するコントローラー以外のコントローラーに送信しようとしています。画面には 4 つの個別のコントローラー (buttonController、toolbarController、textController、graphicController) と他の 4 つを制御する 5 番目のコントローラー (mainController) で管理したい 4 つの異なる領域があります。mainController は、File's Owner に関連付けられたものでもあります。ボタンの押下を mainController で処理するのは簡単です。
MainController.h ファイル:
- (IBAction)buttonIsTouched:(id)sender;
MainController.m ファイル:
- (IBAction)buttonIsTouched:(id)sender {
..handle button touch event etc.
}
次に、Interface Builder で、ボタンの Touch Down イベントを File's Owner に関連付け、選択buttonIsTouched
して離れます。すべて正常に動作します。ただし、ファイルの所有者コントローラーではないコントローラーに対してまったく同じことを行うと、アプリケーションがクラッシュします。これが私がしたことです:
mainController のインスタンス変数として 4 つのコントローラーを作成します。でそれらをインスタンス化し-[MainController viewDidLoad]
ます。上記とまったく同じボタン処理メソッドを提供する Interface Builder で、オブジェクト テンプレートを Library から mainController.xib ブラウザーに (4 回) ドラッグします。これらのオブジェクトのタイプをそれぞれButtonController
、ToolBarController
、TextController
およびに設定しGraphicsController
ます。Touch Down ボタン イベントをButtonController
オブジェクトに関連付け、buttonIsTouched
エントリを選択します (小さなポップアップ ボックスで) アプリケーションをビルドして実行します ボタンをクリックします クラッシュ - 申し訳ありませんが、エラー コードを書き留めていませんでしたが、INVALID_ACCESS に似ていました
もちろん、すべての入力を最初に mainController に送信してから、個々のコントローラーに委譲することもできますが、これは洗練されていない解決策のように思えます。mainController を通過してから、イライラする場合は親切に戻る必要があります。
誰かがこれを行う方法を知っていて、私がやりたいことと似たようなことをするサンプルコードを持っているなら、私はそれを感謝します.
交流