Ios 如何排除已显示但未按下的多个视图控制器?
场景: 我需要显示3个或更多的弹出窗口一个接一个的按钮点击在每个弹出窗口。我为每个弹出窗口创建了不同的Ios 如何排除已显示但未按下的多个视图控制器?,ios,objective-c,popup,viewcontroller,Ios,Objective C,Popup,Viewcontroller,场景: 我需要显示3个或更多的弹出窗口一个接一个的按钮点击在每个弹出窗口。我为每个弹出窗口创建了不同的viewcontroller和xib文件。因此,为了显示每个弹出窗口,我使用了presentViewController而不是pushViewController UIViewController* presVC = self.window.rootViewController; while (presVC) { UIViewController* temp = vc.presenti
viewcontroller
和xib
文件。因此,为了显示每个弹出窗口,我使用了presentViewController
而不是pushViewController
UIViewController* presVC = self.window.rootViewController;
while (presVC) {
UIViewController* temp = vc.presentingViewController;
if (!temp.presentedViewController) {
[vc dismissViewControllerAnimated:NO completion:^{}];
break;
}
vc = temp;
}
也就是说,我用了这个:
[self-presentPopupViewController:searchPopUpView动画类型:0]代码>
而不是
[self.navigationController-pushViewController:searchPopUpView-animated:YES]代码>
为了关闭弹出窗口,编写了以下代码:
[self dismissPopupViewControllerWithanimationType:0];
问题:
弹出窗口显示得非常完美,但每当弹出窗口出现时,背景会越来越暗。在所有弹出窗口都被删除后,我不得不点击空白屏幕来删除那些较暗的部分。如何克服这个问题?我认为您正在使用mjpopviewcontroller来显示弹出窗口
如果是这样,那么试试这个
假设有一个controllerA,您想从中显示一个弹出式控制器popupControllerB
然后在您的控制器中添加通知观察者
要在控制器中写入的代码:
// Add Notification Observer when your view initialise.
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(dismissPopup) name:@"DISMISS_POPUP" object:nil];
在视图中将消失删除通知
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
当您从popupControllerB发布通知时,将调用此方法
-(void)dismissPopup {
[self dismissPopupViewControllerWithanimationType:MJPopupViewAnimationFade];
}
在popupControllerB中,如果要取消弹出窗口,请编写以下代码
[[NSNotificationCenter defaultCenter] postNotificationName:@"DISMISS_POPUP" object:nil];
上述代码行将调用在控制器中编写的方法,并正确关闭弹出窗口。如果要关闭显示的UIViewController
,可以使用此代码。我使用这种方法来消除演示的IEWController
。它将关闭rootViewController
上所有的演示视图控制器
UIViewController* presVC = self.window.rootViewController;
while (presVC) {
UIViewController* temp = vc.presentingViewController;
if (!temp.presentedViewController) {
[vc dismissViewControllerAnimated:NO completion:^{}];
break;
}
vc = temp;
}
可以添加UI图像。[自我呈现视图控制器:yourobj动画:是完成:无];并解除[自我解除查看控制器激活:是完成:无];朋友,我想这对你有帮助。检查你的[self.childViewControllers count]
然后逐个运行循环抽头viewcontroller并将其从parentViewController中删除,这个技巧会对你有帮助。@Lalitkumar它不是这样工作的。如果我添加了这些代码,那么它将显示为完整的vie控制器,而不是弹出窗口