2011-05-02 7 views
1

他のコントローラのメソッドにアクセスする方法について少し質問があります。 Objective-C - 他のコントローラからアクセスする方法

私はヘッダファイル内のクラスAで何をしたのですか:

私はコントローラAとBを持っています。コントローラAで私はメソッドをプログラムしました。
+(void)goBack; 

と実装ファイル内:

:私は、コントローラAにメソッドへのアクセスを得るためにこれを行うコントローラBで

+(void)goBack { 
NSLog(@"go back"); 
} 

私はプログラムを実行するとき、それは動作しません。私は、コントローラBの機能GOBACK上のコマンドのクリックを行うときしかし、プログラムはちょうど

いiは、コントローラAの方法に言及取得、シャットダウンします誰でも問題が何であるか考えていますか?事前に

おかげで、

+0

Xcodeは単なるIDEです。言語はObjective-Cです。 (そのように、私はあなたの質問に再度タグを付けました。) –

+0

静的(+)関数を使う理由は? –

答えて

3

は、それは非常に簡単だ...あなただけのクラスとインスタンスメソッドの宣言を混合:「+」記号は、メソッドがクラスメソッドであることを示しています。あなたの場合は " - "なので

-(void)goBack; // a instance method declaration!

希望します。インスタンスメソッドの宣言対

クラス...あなたが(「+」の前で)クラスメソッドとしてGOBACKを宣言しているにもWhat is the difference between class and instance methods?

+0

これは確かに役立ちます!私はあなたが私に解決策を与えることができることを何時間も検索してうれしいです。説明に感謝して、それは私のために多くをクリアしました! – Snowy

0

を参照してください。 +を - に変更します。

0

GoBackのは、クラスAの静的メソッドであるので、あなたはそれが法だ呼び出すためにAのインスタンスを必要としない、あなただけのように同じようにそれを呼び出すことができます。

[にClassAのGoBack]。あなたはdon'y

+0

私はこれを試しましたが、私のためにうまくいきませんでした。 – Snowy

0

は、あなたがこのように令状できる静的関数を宣言する必要があります:

-(void)goBack { 
NSLog(@"go back"); 
} 
クラスAでは

と同じクラスBに:

-(void)goPreviousArticle:(id)sender { 
ViewProductInformation_ViewController *theInstance = [[ViewProductInformation_ViewController alloc] init]; 
[theInstance goBack]; 
} 

は次にそれらを使用しています。私はその場合アプリケーションがクラッシュしないと思います。

関連する問題