这是我的应用设计。我mainController
提出了secondViewController
。现在,我想解雇secondViewController
并随后在aMethod
上调用方法mainController
,如下所示:
[self dismissViewControllerAnimated:YES completion:aMethod];
但是这给了我错误use of undeclared identifier 'aMethod'
显然我没有正确使用完成处理程序,但我无法弄清楚正确的方法。
答案 0 :(得分:12)
我认为这就是你要找的东西,
[self dismissViewControllerAnimated:YES completion:^{
[self.mainController aMethod];
}];
在上面的代码中,您需要在块外声明self
并将其用作
__block SecondViewController *object = self;
[self dismissViewControllerAnimated:YES completion:^{
[object.mainController aMethod];
}];
只是为了避免self
被保留在阻止中。
<强>更新强>
现在遇到了问题。您需要在mainController
的.h文件中将secondViewController
声明为属性。之后当您从secondViewController
展示maincontroller
时,您需要将其设置为,
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];
}];
答案 1 :(得分:1)
你想要这样的东西:
[self dismissViewControllerAnimated:YES completion:^{
...
<do something on completion here>
...
}];
答案 2 :(得分:-3)
声明:dismissViewControllerAnimated:YES completion:Nil
我希望它有所帮助。