Como é que um acesso ao controlador de vista de um super?
-
06-07-2019 - |
Pergunta
Eu tenho um problema e eu vou tentar explicar o problema:
- Eu tenho um
UIViewController
principal (tela inteira) - Eu tenho um
UIViewController
secundário (SetBounds) -
Eu adicionei meu ponto de vista secundário à minha
mainView
usando este:[mainController.view addSubview:secondaryController.view];
-
Eu criei um terceiro controlador:
modalController
, eu adicionei-o ao meu controlador secundário como esta:[secondaryController presentModalViewController:modalController animated:YES];
-
Eu faço o cálculo com base em alguns eventos dentro da minha
modelController
. -
Eu sou capaz de enviar mensagens do meu
modalController
ao meusecondaryController
usando:[[self parentViewController] performSelector : @selector(myMethodInSecondaryController:) withObject : myObject afterDelay : .5];
NOTA: "auto" corresponde ao
modalController
-
Eu preciso passar "myObject" ao meu
mainController
, mas eu não posso fazer referência ao meumainController
dosecondaryController
. Eu tentei isso:[[self parentViewController] performSelector : @selector(myMethodInMainController:) withObject:myObject afterDelay : .5];
NOTA: "auto" corresponde ao
secondaryController
mas não trabalho, eu tenho acesso a minha visão de MainController usando:
self.view.superview
NOTA: "eu" é o meu
secondaryController
mas não ao seu controlador.
Solução
Em seu controlador secundário, tente
id mainViewController = [self.view.superview nextResponder];
e verificar se este for o controlador de vista que você está procurando.
documentação da Apple -[UIResponder nextResponder]
:
UIView implementa este método, retornando o objeto UIViewController que administra-lo (se ele tiver um) ou seu superview (se isso não acontecer)