5

这是我的应用程序设计。我有mainController哪些礼物secondViewController。现在,我想解雇secondViewController并随后调用该方法aMethodmainController如下所示:

[self dismissViewControllerAnimated:YES completion:aMethod];

但这给了我错误use of undeclared identifier 'aMethod'

显然我没有正确使用完成处理程序,但我无法找出正确的方法。

4

3 回答 3

13

我想这就是你要找的,

[self dismissViewControllerAnimated:YES completion:^{
            [self.mainController aMethod];
        }];

在上面的代码中,您需要self在块外部声明并将其用作,

__block SecondViewController *object = self;

[self dismissViewControllerAnimated:YES completion:^{
                [object.mainController aMethod];
            }];

只是为了避免self被阻止。

更新:

现在有问题了。您需要mainController在 .h 文件中声明为属性secondViewController。之后,当您展示secondViewControllerfrom时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];
                }];
于 2012-10-26T00:15:47.770 回答
1

你想要这样的东西:

[self dismissViewControllerAnimated:YES completion:^{
            ...
            <do something on completion here>
            ...
        }];
于 2012-10-26T00:09:35.083 回答
-3

声明:dismissViewControllerAnimated:YES completion:Nil

我希望它有所帮助。

于 2012-10-26T00:07:25.737 回答