myślę, że to, czego szukasz,
[self dismissViewControllerAnimated:YES completion:^{
[self.mainController aMethod];
}];
W powyższym kodzie trzeba zadeklarować self
zewnątrz bloku i używać go jak
__block SecondViewController *object = self;
[self dismissViewControllerAnimated:YES completion:^{
[object.mainController aMethod];
}];
Po prostu, aby uniknąć zatrzymania self
w bloku.
Aktualizacja:
Mam teraz problem. Musisz zadeklarować mainController
jako właściwość w pliku .h pod numerem secondViewController
. Po tym, gdy prezentujemy secondViewController
z maincontroller
, trzeba ustawić go jak
secondViewController.maincontroller = self;
[self presentViewController:secondViewController animated:YES completion:Nil];
w pliku SecondViewController.h
,
@property(nonatomic, assign) MainController *mainController;
w pliku SecondViewController.m
,
@synthesis mainController;
Aktualizacja 2:
Jeśli nie chcesz zadeklarować maincontroller
jako właściwości, spróbuj tego. Nie jestem pewien, czy to jest właściwa droga. Ale wygląda na to, że kiedyś działało.
MainController *mainController = (MainController *)[self.view.superview nextResponder];
[self dismissViewControllerAnimated:YES completion:^{
[mainController aMethod];
}];
Update 3 (sugerowane):
ten powinien pracować dla Ciebie. Sprawdź to.
MainController *mainController = (MainController *)self.parentViewController;
[self dismissViewControllerAnimated:YES completion:^{
[mainController aMethod];
}];
Cóż ig im robi '__block YouViewController * object = self' nie byłby ustawienie obiektu, który będzie viewController, który jest odwołany? Nie ten prezentowany? –
Dobrze, widziałem twoją aktualizację. obiekt nie ma mainController, nie wie, co to jest .. –
Czy możesz sprawdzić teraz i daj mi znać, czy to zadziałało? – iDev