スーパーのView Controllerにどのようにアクセスしますか?
-
06-07-2019 - |
質問
問題があり、問題の説明を試みます:
- メインの
UIViewController
(画面全体)が1つあります - セカンダリ
UIViewController
(setbounds) が1つあります
-
これを使用して
mainView
にセカンダリビューを追加しました:[mainController.view addSubview:secondaryController.view];
-
3番目のコントローラーを作成しました:
modalController
、次のようにセカンダリコントローラーに追加しました:[secondaryController presentModalViewController:modalController animated:YES];
-
modelController
内のいくつかのイベントに基づいて計算を行います。 -
次を使用して、
modalController
からsecondaryController
にメッセージを送信できます。[[self parentViewController] performSelector : @selector(myMethodInSecondaryController:) withObject : myObject afterDelay : .5];
注:" self"
modalController
に対応
-
" myObject"を渡す必要があります。
mainController
にアクセスできますが、secondaryController
からmainController
への参照を作成できません。私はこれを試しました:[[self parentViewController] performSelector : @selector(myMethodInMainController:) withObject:myObject afterDelay : .5];
注:" self"
に対応secondaryController
しかし機能しません。
を使用してmainControllerのビューにアクセスできます。self.view.superview
注:" self"私の
secondaryController
ただし、コントローラーにはありません。
解決
セカンダリコントローラーで試してください
id mainViewController = [self.view.superview nextResponder];
これが探しているView Controllerかどうかを確認します。
-[UIResponder nextResponder]のAppleのドキュメント
:
UIViewは、それを管理するUIViewControllerオブジェクト(ある場合)またはそのスーパービュー(ない場合)を返すことにより、このメソッドを実装します
所属していません StackOverflow