내 ViewController에서 단추와 다른 요소가 포함 된보기를 만들었습니다. 버튼을 누르면 부모 ViewController에서 메소드를 호출하려고합니다. 나는 시도했다 :자식보기에서보기 컨트롤러의 메서드 호출
[self.superview buttonPressedMethod];
그러나 Superview는 ViewController가 아니라 UIView이다. 이 작업을 수행 할 여지가 있습니까?
내 ViewController에서 단추와 다른 요소가 포함 된보기를 만들었습니다. 버튼을 누르면 부모 ViewController에서 메소드를 호출하려고합니다. 나는 시도했다 :자식보기에서보기 컨트롤러의 메서드 호출
[self.superview buttonPressedMethod];
그러나 Superview는 ViewController가 아니라 UIView이다. 이 작업을 수행 할 여지가 있습니까?
이것은 정확히 타겟/액션 메커니즘의 목적입니다. 뷰 컨트롤러의 메서드를 IBAction으로 만듭니다. 보기 컨트롤러를 단추의 대상으로 설정하고 메서드를 해당 동작으로 설정하십시오. 그게 당신이해야 할 전부입니다.
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];
}
보기 컨트롤러에서 대리자를 만들고 자식보기에서 대리인을 설정하는 것이 좋습니다. 따라서 상황에 따라 뭔가가 발생하면 그에 따라 대리자 메서드를 호출하십시오.
이 단추는 프로그래밍 방식으로 만들어집니다. ViewController의 목표는 무엇입니까? –
보기 컨트롤러에 대상이 없으므로 * 대상입니다. '-addTarget : action : forControlEvents :'를 사용하여 버튼의 타겟과 액션을 설정할 수 있습니다. 보기 컨트롤러를 대상으로 지정하고 조치로 호출 할 메소드를 지정하십시오. 이 메소드에는 적절한 서명이 있어야합니다. [the docs] (http://developer.apple.com/library/IOS/#documentation/General/Conceptual/Devpedia-CocoaApp/TargetAction.html)를 읽으셨습니까? – Caleb
예. 죄송합니다. 신속하게 답변을 작성했습니다. ViewController 내 대상 이해합니다. 내가 의미했던 것은 프로그래밍 방식으로 어떻게 ViewController를 목표로 설정 하는가이다. 예를 들어, 여기에 target으로 self를 설정합니다. ** [forwardButton addTarget : self action : @selector (forwardButtonPressed) forControlEvents : UIControlEventTouchUpInside]; ** 어떻게 뷰 컨트롤러를 대신 만들 수 있습니까? –