2011-01-27 5 views
34

현재 UIView의 부모 UIView에 액세스하려면 현재 UIView에서 부모 UIView의 객체를 선언하고 부모 UIView 객체를 현재 뷰의 객체 속성에 할당하여 액세스합니다.현재보기의 상위보기 액세스 - iphone sdk

이것을 없애고 부모 뷰의 메서드 나 속성을 직접 호출 할 수있는 방법이 있습니까?

또한 (parentView *) self.view.superview 시도했지만 도움이되지 않았다.

이 개체에 대한 함수를 호출하는 동안 오류가 발생합니다.

[UIVIew unrecognized selector...... 

많은 감사합니다.
Nav

답변

67

당신이 UIView (아닌 UIViewController)에서 직접 호출하는 경우, 오류를 제공 self.view.superview 대신 self.superview이되어야합니다.

+0

UIViewController입니다. 하지만 그것은 UIView 너무 개체가 동일하기 때문에 작동하지 않아야 같아요, 둘 다 UIView입니다 –

+2

이 ViewDidLoad에 nil을 반환합니다. viewDidAppear 이후에서만 사용할 수 있습니다. –

0

@ Naveed : 이것은 부모보기인지 하위보기인지 여부에 관계없이 모든보기에 사용할 수있는 일반적인 코드입니다. 원하는 단추 이름과 원하는보기 이름을 변경하십시오. 예를 들어 뒤로 버튼을 누르면 U 라이브러리보기로 이동하여이 코드를 작성하십시오.

-(IBAction)backButtonPressed:(id) sender 
{ 
     llibraryView *libraryview=[[libraryView alloc] initWithNibName:nil bundle:nil]; 
    libraryview.modalTransitionStyle=UIModalTransitionStyleCoverVertical; 
    [self presentModalViewController:libraryview animated:YES]; 
    [libraryview release]; 
} 

ur 문제가 해결되었는지 여부를 알려주십시오.

+0

도움을 주셔서 대단히 감사합니다. 사실 내 문제는보기 이름 싶지 않아. 나는 그것을 역동적으로 만들고 싶었다. 감사. –

0

내가 생각할 수있는 것은 viewcontroller의 뷰에 추가 한 viewcontroller의 메서드를 뷰에서 호출하려고한다는 것입니다.

여기에서 두 가지 옵션이 있습니다.보기 컨트롤러를보기의 위임자로 설정 한 다음 [delegate performSelector :] 접근 방식으로 ViewController의 메서드를 호출하십시오.

다른 접근법은보기의 수퍼 뷰에 액세스 한 다음 컨트롤러를 가져 오는 것입니다. 직접 할 수는 없지만 그렇게 할 수 있다면 MVC의 모든 목적을 이길 수 있습니다.

는하지만, 아직 여기 당신이 가고, 밖으로 방법이있다 : -이

Get to UIViewController from UIView?

희망이 당신을 도와줍니다.