当第二个呈现的viewcontroller被解雇时触发了父视图的viewWillAppear

时间:2016-06-19 00:34:55

标签: ios objective-c viewwillappear

我有3个viewcontrollers 让我们说AVC,BVC和CVC

首先,我从AVC展示BVC,然后从BVC展示CVC

因此,层次结构将是AVC-> BVC-> CVC。

当我从BVC解雇CVC时,AVC的viewWillAppear被触发,我怎样才能防止viewWillAppear AVC被调用?

由于

更新
首先出现(在AVC中)

BTViewController *BTVC = [self.storyboard instantiateViewControllerWithIdentifier:@"BTVCIns"];
__weak BTViewController *weakBTVC = BTVC;
BTVC.dismissAction = ^{[weakBuyTicketVC dismissViewControllerAnimated:YES completion:nil];};
[BTVC setModalPresentationStyle:UIModalPresentationOverCurrentContext];
[self presentViewController:BTVC animated:YES completion:nil];

第二次出现(在BVC中)

PMViewController *PMVC = [self.storyboard instantiateViewControllerWithIdentifier:@"PMVCIns"];
__block PMViewController *blockPMVC = PMVC;
blockPMVC.dismissAction = ^{[blockPMVC dismissViewControllerAnimated:YES completion:nil];};
blockPMVC.delegate = self;
[self presentViewController:PMVC animated:YES completion:nil];

1 个答案:

答案 0 :(得分:0)

来自View Controller Programming Guide for iOS

  

使用UIModalPresentationFullScreen样式呈现视图控制器时,UIKit通常会在过渡动画完成后删除基础视图控制器的视图。您可以通过指定 UIModalPresentationOverCurrentContext 样式来阻止删除这些视图。当呈现的视图控制器具有允许底层内容显示的透明区域时,您可以使用该样式。

由于您使用UIModalPresentationOverCurrentContext,iOS认为BVC可能具有暴露AVC的透明区域,因此当BVC出现时AVC也可能出现,因此调用viewWillAppear