「A」、「B」、「C」というラベルの付いた3つのView Controllerがあるとしましょう。現在、「A」はウィンドウの rootViewController であり、ボタンがタップされると「B」がモーダルに表示されます。"B" では、ボタンがタップされると "A" によって閉じられ、"A" はすぐに C をモーダルに表示します。この目標を達成することを期待して私のコードを次に示しますが、そうすることに失敗しました。
「A」viewController では、ヘッダー ファイルでブロックを保持するプロパティを宣言し、「B」viewController が「A」によって閉じられたときに呼び出されるようにしました。
@property (nonatomic, copy) void (^presentZapLaunch)(void);
これが「A」のviewControllerのプレゼンスメソッドで「B」を提示する
-(void)presentNextViewCon
{
CYCGestureZapZapViewController *gestureViewCon = [[CYCGestureZapZapViewController alloc]init];
if (!self.presentZapLaunch) {
__weak CYCZapZapViewController *weakRefCon = self;
self.presentZapLaunch = ^{
CYCZapZapViewController *preventWeakRefCon = weakRefCon;
CYCZapZapLaunchViewController *zapLaunch = [[CYCZapZapLaunchViewController alloc]init];
NSLog(@"Called");
[preventWeakRefCon presentViewController:zapLaunch animated:YES completion:nil];
};
}
[self presentViewController:gestureViewCon animated:YES completion:nil];
}
これは、「A」によって却下される「B」却下方法であり、「A」は「C」をすぐに提示する必要があります
-(void)presentNextViewCon
{
NSLog(@"Hello");
[self.presentingViewController dismissViewControllerAnimated:self completion:^{[(CYCZapZapViewController *)self.presentingViewController presentZapLaunch];}];
}
*ウィンドウの rootViewController として "A" ビュー コントローラーを使用しており、"A" は "B" ビュー コントローラーをモーダルに表示することに注意してください。「A」、「B」、「C」はすべてView Controllerです。