作者:与天使有染的救赎_164 | 来源:互联网 | 2023-05-24 13:10
我在我的内部创建了一个弹出窗口,MainViewController
当它触及一个按钮时使用UIPopoverPresentationController
和它一样设置就像它在WWDC 2014中显示的那样,通过以下方式:
MainViewController.swift
class MainViewController : UIViewController, UIPopoverPresentationControllerDelegate {
@IBAction func showPopover(sender: AnyObject) {
var popoverCOntent= self.storyboard?.instantiateViewControllerWithIdentifier("PopOverViewController") as UIViewController
popoverContent.modalPresentatiOnStyle= UIModalPresentationStyle.Popover
var popover = popoverContent.popoverPresentationController
popoverContent.preferredCOntentSize= CGSizeMake(250, 419)
popover!.delegate = self
popover!.sourceView = self.view
popover!.sourceRect = CGRectMake(180,85,0,0)
self.presentViewController(popoverContent, animated: true, completion: nil)
}
}
popover里面有一个View,当我LastViewController
使用模态segue 显示点击手势识别器查看它时 ,模态segue是通过Interface Builder创建的,而不是代码使用动作呈现另一个LastViewController
一旦LastViewController
被解雇,我回到MainViewController
了弹出区仍然打开.
在PopOverController中我只有默认代码.
LastViewController.swift
@IBAction func dismissVIew(sender: AnyObject) {
self.dismissViewControllerAnimated(true, completion: nil)
}
上面的代码用于LastViewController
在触摸内部按钮时解除.
故事板
一旦另一个LastViewController
看到它,或者在另一个LastViewController
应该被打开之前,我怎么能解除它?
提前致谢
1> Jageen..:
我已经在这里回答了同样的问题.
场景不同但解决方案是相同的
您必须在完成当前视图控制器时编写用于关闭呈现视图控制器的代码.
在你的dismissVIew方法上写下面的代码LastViewController.swift
var tmpController :UIViewController! = self.presentingViewController;
self.dismissViewControllerAnimated(false, completion: {()->Void in
println("done");
tmpController.dismissViewControllerAnimated(false, completion: nil);
});
下载链接
2> Jeremy Pope..:
在FinalViewController上的按钮操作中,您是否尝试过:
@IBAction func dismissMe() {
//this should tell the popover to tell the main view controller to dismiss it.
self.presentingViewController!.presentingViewController!.dismissViewControllerAnimated(false, completion: nil)
}