我想这就是你所寻找的内容。
[self dismissViewControllerAnimated:YES completion:^{ [self.mainController aMethod];
}];
在上述代码中,您需要在区块外声明
self
并使用它,如下所示:
__block SecondViewController *object = self;
[self dismissViewControllerAnimated:YES completion:^{
[object.mainController aMethod];
}];
为了避免在块中保留self
。
更新:
现在已经明白了问题。您需要在secondViewController
的.h文件中声明mainController
为属性。之后,当您从maincontroller
呈现secondViewController
时,您需要将其设置为:
secondViewController.maincontroller = self
[self presentViewController:secondViewController animated:YES completion:Nil]
在您的
SecondViewController.h
文件中,
@property(nonatomic, assign) MainController *mainController
在你的
SecondViewController.m
文件中,
@synthesis mainController
更新2:
如果您不想将maincontroller
声明为属性,请尝试这种方法。我不确定这是否是正确的做法,但看起来以前可以用。
MainController *mainController = (MainController *)[self.view.superview nextResponder];
[self dismissViewControllerAnimated:YES completion:^{
[mainController aMethod];
}];
更新3(建议):
这应该适用于你。检查一下。
MainController *mainController = (MainController *)self.parentViewController;
[self dismissViewControllerAnimated:YES completion:^{
[mainController aMethod];
}];
__block YouViewController *object = self
,那么我设置的不是被呈现的视图控制器,而是被解除显示的视图控制器,对吗? - Jonah KatzsecondViewController.maincontroller = self;
这行代码并不合理,因为 secondviewcontroller 没有 maincontroller。 - Jonah Katz