2016-05-10 3 views
1

私はObjective Cの新機能で、MyViewControllerクラスのViewControllerを使用したスト​​ーリーボードを持つアプリケーションを持っています。私はCDVPluginを持っています(私のcordovaアプリケーション用)。私のコード・アプリケーションのメソッドの1つでは、Active ViewControllerを参照してその中から関数の1つを呼び出すことができます。 MyViewController.hヘッダーをインポートしましたが、もう一方の代理人にする方法があるかもしれないと思っていましたが、これにアプローチするのが間違っているような気がしますか?iOS - アクティブなストーリーボードビューコントローラーを外部クラスから参照

アイデア?

+0

、あなたは、関数を宣言.Mファイルにして、アクティブなビューコントローラのintialize「MyViewCOntroller」クラスにその実装を行い、機能にアクセスするには、そのオブジェクトを使用することができます。 –

+0

たとえば、 'MyViewController * myViewController = [[MyViewController alloc] init]'を意味しますか?それを別のViewControllerにセグメンテーションする場合には、[myViewController function] 'はこれに該当しますか?私はまだ客観的なCに慣れていません。これは、不必要なView Controllerをインスタンス化するような気がします。 – AlecGamble

+0

performSegueWithIdentifierを使用したいので、特定のものも参照する必要があります。 – AlecGamble

答えて

1

あなたが使用しているアプリケーションのための現在のルートビューコントローラを取得することができます。

[UIApplication sharedApplication].delegate.window.rootViewController 

ルートビューコントローラは、アクティブなビューコントローラであるかもしれない、またはそれはあなたが何かをしたい場合があり、その場合には、ナビゲーションコントローラ、かもしれません以下のような:MyViewController.hで

UIViewController *active = ((UINavigationController *)[UIApplication sharedApplication].delegate.window.rootViewController).visibleViewController 
if [active isKindOfClass: [MyViewController class]] { 
    MyViewController *myViewController = (MyViewController *)active 
    // Call any methods you need to on myViewController 
} 
+0

ありがとう、特定のタイプのビューコントローラ、つまりMyViewControllerであることを確認できる方法はありますか? – AlecGamble

+0

@AlecGamble確かに、私はそれを行う例で答えを更新しました –

関連する問題