2011-10-06 7 views
2

내 ViewController에서 단추와 다른 요소가 포함 된보기를 만들었습니다. 버튼을 누르면 부모 ViewController에서 메소드를 호출하려고합니다. 나는 시도했다 :자식보기에서보기 컨트롤러의 메서드 호출

[self.superview buttonPressedMethod]; 

그러나 Superview는 ViewController가 아니라 UIView이다. 이 작업을 수행 할 여지가 있습니까?

답변

1

이것은 정확히 타겟/액션 메커니즘의 목적입니다. 뷰 컨트롤러의 메서드를 IBAction으로 만듭니다. 보기 컨트롤러를 단추의 대상으로 설정하고 메서드를 해당 동작으로 설정하십시오. 그게 당신이해야 할 전부입니다.

+0

이 단추는 프로그래밍 방식으로 만들어집니다. ViewController의 목표는 무엇입니까? –

+1

보기 컨트롤러에 대상이 없으므로 * 대상입니다. '-addTarget : action : forControlEvents :'를 사용하여 버튼의 타겟과 액션을 설정할 수 있습니다. 보기 컨트롤러를 대상으로 지정하고 조치로 호출 할 메소드를 지정하십시오. 이 메소드에는 적절한 서명이 있어야합니다. [the docs] (http://developer.apple.com/library/IOS/#documentation/General/Conceptual/Devpedia-CocoaApp/TargetAction.html)를 읽으셨습니까? – Caleb

+0

예. 죄송합니다. 신속하게 답변을 작성했습니다. ViewController 내 대상 이해합니다. 내가 의미했던 것은 프로그래밍 방식으로 어떻게 ViewController를 목표로 설정 하는가이다. 예를 들어, 여기에 target으로 self를 설정합니다. ** [forwardButton addTarget : self action : @selector (forwardButtonPressed) forControlEvents : UIControlEventTouchUpInside]; ** 어떻게 뷰 컨트롤러를 대신 만들 수 있습니까? –

0
At ParentViewController.h 
-(void)ParentMethod; 

At ParentViewController.m 
-(IBAction)button:(id)sender { 
     [self ParentMethod]; 
} 

At IBAction of Play Button on child view controller do this: 
-(IBAction)ChildMethod:(id)sender { 
     ParentViewController *parent=self.parentViewController; 
     [parent ParentMethod]; 
} 
0

보기 컨트롤러에서 대리자를 만들고 자식보기에서 대리인을 설정하는 것이 좋습니다. 따라서 상황에 따라 뭔가가 발생하면 그에 따라 대리자 메서드를 호출하십시오.