0

既に初期化されている HeyViewController などの別のビューコントローラーからメソッドを呼び出そうとしています。そのView Controllerの新しいインスタンスを再初期化して、そのメソッドを呼び出すにはどうすればよいですか?

例 HeyViewController *hey =[[HeyViewController alloc]init]; [ちょっと見せて];

すでに初期化されているときにView Controllerを初期化するため、良くありません。

ええ、どうすればこれを行うことができますか?

編集:

申し訳ありませんが不明です。問題のビューコントローラーは、ストーリーボードを使用するアプリの流れにより、このビューコントローラーの前に初期化されています。ビューコントローラーは実行されていますが、そのビューコントローラーのインスタンスは現在のビューコントローラーにありません。

4

2 に答える 2

1

あなたが直面している問題は、既存のView Controllerへのポインターをどのように取得するかです。それに答えるには、他のView Controllerがどのように作成されるかを考える必要があります。

ビューコントローラーの流れは?「Hey」View Controller を作成するのは誰ですか? 「Hey」View Controllerにアクセスする必要があるView Controllerは、「Hey」View Controllerを作成したView Controllerにアクセスできますか?

答えが「はい」の場合は、「Hey」ビュー コントローラを作成するビュー コントローラに、それへのポインタを prepareForSegue メソッドに保存させます。次に、必要に応じて、作成中のビュー コントローラーに「Hey」ビュー コントローラーへのポインターを要求します。

3番目のView Controllerが「Hey」View Controllerの作成者にアクセスできない場合、「Hey」View Controllerのインスタンスは1つしかありませんか?

「Hey」ビュー コントローラのインスタンスが 1 つしかないと確信できる場合は、「currentHeyViewController」クラス メソッドを「Hey」ビュー コントローラに追加します。「Hey」VC のヘッダーにプライベート グローバル「gCurrentHeyVC」を追加します。currentHeyViewController クラス メソッドでグローバルの値を返します。init メソッドでグローバルを設定し、dealloc メソッドでグローバルを nil に設定します。

編集:@gWizが以下で指摘したように、上記の最後のオプションは、「Hey」View Controllerをシングルトンに変える方法の簡単な説明です。

于 2013-09-24T00:22:30.227 に答える