Tło: Chciałbym odwołać modalView że mam podane wcześniej i od razu obecny samo viewController
że po prostu oddalił się z nowymi informacjami.iOS: Lekceważenie i Przedstawiając ModalViewController bez dostępu do jego rodzica ViewController
Problem: I nie były bardzo udane w ten sposób bez wyraźnej wskazówki dla rodziców ViewController
że przedstawiła pierwsze ViewController
modally. Próbuję napisać tę klasę, która działa bez zakłócania z poprzedniego kodu viewController
.
Możliwa ołowiu: Istnieje kilka rzeczy, które mi zostały eksperymentujących z:
1.) usiłuje uzyskać dostęp do rodzica ViewController
, który w tej chwili nie wiem jak.
2.) Gdy dostęp do rodzica jest zdobyte, mogę po prostu zastosować następujący kod:
UIViewController* toPresentViewController = [[UIViewController alloc] init];
[self dismissViewControllerAnimated:YES completion:^{
[parentViewControllerAccessor presentModalViewController:toPresentViewController animated:YES];
}];
W teorii powinno to działać ze względu na dostęp do rodzica viewController
. Jestem otwarty na inne sposoby robienia tego.
Założenie: Nie masz uprawnień do zmiany jakiegokolwiek kodu w rodzicu ViewController
.
Jeśli rozumiem to poprawnie, powinienem zmienić ten kod: '[parentViewControllerAccessor presentModalViewController: toPresentViewController animated: YES];' to '[self.presentingViewController presentModalViewController: croppedPhotoVC animated: YES];'. Niestety, wydaje się, że to nie działa. Czy rozumiem coś niepoprawnie? – Byte
Dzieje się tak prawdopodobnie z powodu tego, jak bloki zachowują obiekty - zachowują siebie, ale nie przedstawiają kontrolera widoku, więc do czasu, gdy "ja" zostało odrzucone, ta właściwość może zostać ustawiona na zero. Ustaw self.presentingViewController na zmienną lokalną poza blokiem, a następnie użyj tej zmiennej z bloku. – jhabbott
To ten sam wniosek, który wymyśliłem. Być może będę musiał stworzyć zmienną statyczną, aby utrzymać to tak, że gdy 'self' zostanie usunięty, metoda będzie nadal działać. Ale to wygląda bardziej jak włamanie. – Byte