2011-05-02 9 views
1

다른 컨트롤러의 메서드에 액세스하는 것에 대해 약간의 질문이 있습니다. 누를 시도하고 있습니다. 예를 들어 컨트롤러 A와 B가 있습니다. 컨트롤러 A에서 컨트롤러 B를 통해 액세스하려고합니다.Objective-C - 다른 컨트롤러에서 액세스하는 방법

헤더 파일의 클래스 A에서 수행 한 작업 :

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

제가 제어기 A에있어서 액세스 얻을 이렇게 제어기 B에서 :

+(void)goBack; 

및 실행 파일 내가 프로그램을 실행할 때

그러나, 그것은 프로그램이 그냥 컨트롤러 B의 기능 GoBack을에 명령을 클릭 할 때이 컨트롤러 A의 방법이라 얻을, 종료, 작동하지 않습니다

합니까 아무도 문제가 무엇인지 알지 못합니까? 사전에

덕분에,

그것은 아주 쉽게 ... 그냥 클래스와 인스턴스 방법 선언을 섞여
+0

Xcode는 IDE 일뿐입니다. 언어는 Objective-C입니다. (따라서 귀하의 질문에 다시 태그를 추가했습니다.) –

+0

정적 (+) 함수를 사용하는 이유는 무엇입니까? –

답변

3

:의 "+"기호는 방법은 클래스 메소드 있음을 나타냅니다. 귀하의 경우에는 "-"이어야합니다.

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

희망이 있습니다. 인스턴스 메소드 선언 대

클래스 (와 앞의 "+")를도 What is the difference between class and instance methods?

+0

확실히 도움이됩니다! 나는 당신에게 나에게 해결책을 줄 수 있다고 많은 시간을 들여서 기쁘다. 설명 해줘서 고마워, 나 한테 많은 도움이 되었어! – Snowy

0

당신은 CLASS 방법으로 GoBack을 선언하는 참조하십시오. +를 -로 변경하십시오. GoBack을가 클래스 A의 정적 메서드이기 때문에

0

, 당신은 당신이 너무처럼 호출 할 수 있습니다,이 메소드의 호출에의 인스턴스를 필요가 없습니다

[를 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]; 
} 

는 다음을 사용합니다. 나는이 경우 응용 프로그램이 충돌하지 않을 것이라고 생각합니다.

관련 문제