2011-02-24 4 views
0

다른 클래스를 트리거하여 세 번째 클래스의 객체를 만드는 한 클래스에서 tapRecognizer로 도청을 감지하고 싶습니다.Obj c의 트리거링 방법

어떻게 두 번째 클래스의 새 개체를 만들지 않고도 탭 감지 클래스에서이 메서드를 트리거 할 수 있습니까?

아니면이 두 번째 클래스의 새 개체를 만드는 것이 좋을까요? 그것은 모든 오래된 데이터를 잃을 것입니다.

어떻게 이러한 트리거가 수행됩니까? 나는 무언가를 시도했지만 클래스 메소드에서 객체가 액세스되고 있다고 경고했다.

ViewController Class 1 
+(void) setupClass2 
{ 
Class2 class = ......... 
class.someValue = ...... 
self.navigationController pushViewController:class ...... 
} 

// The calling/trigger class should be able to invoke the setupClass function e.g. 
[Class1 setupClass]; 

어떻게 제대로 했습니까?

답변

1

는이 같은 방법으로 프로토콜을 선언해야 :

-(void) class1:(Class1*) c didReceivedTouch:(UITouch*) e; //or any other params that you need 

그런 다음 해당 프로토콜 (귀하의 경우 2 등급)을 준수하는 대리자를 지정합니다. 콜백에 클래스 3 객체를 만듭니다.

+0

좀 더 설명해 주시겠습니까? 나는 정말로 감사 할 것입니다. – jarryd

+0

http://iphonedevelopertips.com/objective-c/the-basics-of-protocols-and-delegates.html – Max

0

최대 제안한 방법과 프로토콜을 선언

@protocol UrProtocolName 필수/옵션 @ @ - (무효) 클래스 1 : didReceivedTouch C (클래스 1 *) (UITouch *) E; // 또는

@end

그런 다음 두 번째 클래스 < UrProtocolName>

..... 

@end

@interface 2ndClass를 프로토콜을 구현해야 할 다른 PARAMS @ 구현 2ndClass

- (void) class1 : (Class1 *) c didReceivedTouch : (UITouch *) e { 3rdClass class = ......... self.navigationController pushViewController : class animated : YES]; } @end

그러나 나는 왜 당신이 2ndClass에 대해 원하는지 이해할 수 없습니다. 원하는 모든 것은 3rdClass의 객체를 만들고 navigationController에 밀어 넣는 것입니다. SecondClass 객체를 SecondClass의 객체를 생성하는 동안 초기화 된 firstClass의 멤버로 가질 수 있으며, 2ndClass에 하나의 메서드를 포함 할 수 있습니다.이 메서드는 3rdClass의 객체를 간단히 만들 수 있습니다.이 메서드는 2ndClass 객체를 여러 번 호출 할 수 있습니다. firstClass 객체가 범위 내에있을 때까지.