、あなたはブロックの外側self
を宣言して、それを使用する必要があります上記のコードで
[self dismissViewControllerAnimated:YES completion:^{
[self.mainController aMethod];
}];
を、
__block SecondViewController *object = self;
[self dismissViewControllerAnimated:YES completion:^{
[object.mainController aMethod];
}];
ブロックしないようにしてください。self
更新:
今の問題を得ました。 secondViewController
の.hファイルのプロパティとしてmainController
を宣言する必要があります。あなたはmaincontroller
からsecondViewController
を提示された場合、その後、あなたのようにそれを設定する必要があり、あなたのSecondViewController.m
ファイルで
secondViewController.maincontroller = self;
[self presentViewController:secondViewController animated:YES completion:Nil];
あなた
SecondViewController.h
ファイルで
、
@property(nonatomic, assign) MainController *mainController;
、
@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'を実行していないのですが、私はオブジェクトを設定して、却下されているviewControllerにしていますか?提示されたものではありませんか? –
ああ、ちょうどあなたの更新を見ました。オブジェクトがmainControllerを持っていないと、それが何であるかを知ることができません。 –
これをチェックして、これが動作するかどうか教えてください。 – iDev