Super의 뷰 컨트롤러에 어떻게 액세스합니까?
-
06-07-2019 - |
문제
문제가 있고이 문제를 설명하려고 노력할 것입니다.
- 나는 하나의 메인이 있습니다
UIViewController
(전체 화면) - 나는 두 번째로 하나가 있습니다
UIViewController
(세트 바운드) 나는 내 2 차 견해를 추가했다
mainView
이것을 사용 :[mainController.view addSubview:secondaryController.view];
세 번째 컨트롤러를 만들었습니다.
modalController
, 나는 다음과 같은 보조 컨트롤러에 추가했습니다.[secondaryController presentModalViewController:modalController animated:YES];
나는 내 내부의 일부 이벤트를 기반으로 미적분학을 만듭니다.
modelController
.내 메시지를 보낼 수 있습니다
modalController
나에게secondaryController
사용 :[[self parentViewController] performSelector : @selector(myMethodInSecondaryController:) withObject : myObject afterDelay : .5];
노트: "자기"는
modalController
"myObject"를 내에게 전달해야합니다
mainController
, 그러나 나는 내 것을 언급 할 수 없다mainController
~로부터secondaryController
. 나는 이것을 시도했다 :[[self parentViewController] performSelector : @selector(myMethodInMainController:) withObject:myObject afterDelay : .5];
노트: "자기"는
secondaryController
그러나 그것은 작동하지 않습니다. 나는 다음을 사용하여 MainController의 견해에 액세스 할 수 있습니다.
self.view.superview
노트: "자기"는 나의 것입니다
secondaryController
그러나 컨트롤러에는 없습니다.
해결책
보조 컨트롤러에서 시도하십시오
id mainViewController = [self.view.superview nextResponder];
그리고 이것이 당신이 찾고있는 뷰 컨트롤러인지 확인하십시오.
애플의 문서 -[UIResponder nextResponder]
:
UIView는 UIViewController 객체를 관리하는 (하나가있는 경우) 또는 수퍼 뷰 (그렇지 않은 경우)를 관리 하여이 메소드를 구현합니다.
제휴하지 않습니다 StackOverflow