我是Swift的新手,我想了解如何使用UIPopoverPresentationController
。
在我的应用程序中,我需要的是,当按下一个按钮时,屏幕上的一个弹出窗口将显示在屏幕的一半,并显示一个XIB文件。
现在发生的是,我设法转向第二个视图控制器,但不知道如何加载XIB文件,以及如何使弹出窗口成为按钮屏幕的一半。这是我的密码
import UIKit
class BaseViewController: UIViewController , UIPopoverPresentationControllerDelegate {
@IBAction func moveToPopoverView(sender: UIButton) {
var popoverViewController = self.storyboard?.instantiateViewControllerWithIdentifier("Popover") as! UIViewController
popoverViewController.modalPresentationStyle = .Popover
popoverViewController.preferredContentSize = CGSizeMake(200, 200)
let popoverPresentationViewController = popoverViewController.popoverPresentationController
popoverPresentationViewController?.permittedArrowDirections = .Any
popoverPresentationViewController?.delegate = self
presentViewController(popoverViewController, animated: true, completion: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
}
}
最佳答案
实现这一点的最简单方法是通过故事板Popover演示Segue。它将为您处理显示的视图控制器实例化。
在将显示弹出窗口的按钮上添加一个弹出窗口演示segue。给SEgue一个标识符。这将处理将弹出窗口锚定到按钮:
为显示的视图控制器设置情节提要演示文稿详细信息。我为TableView控制器(嵌入在导航控制器中)选择了页表表示。
添加prepareForSegue:sender:
代码以将任何参数传递给显示的视图控制器。(我没有学过斯威夫特……对不起,目标c。)
-(void)准备发送:(uistoryboardsegue*)发送人:(id)未使用的发送人{
if([[segue identifier]isEqualToString:@“ShowBibleSelectBookChapter”])。{
uinavigationcontroller*导航控制器=segue.destinationviewcontroller;
if([navigationcontroller.topviewcontroller iskindofclass:[bibleselectviewcontroller class])。{
bibleSelectViewController*selectViewController=(bibleSelectViewController*)导航控制器.topViewController;
selectviewcontroller.initialbookchapterverse=self.bookchapterverse;
}
uipopOverresentationController*popOverresentationController=navigationController.popOverresentationController;
popOverPresentationController.Delegate=自己;
}
}
Segue将为您完成所有实际工作,实例化、呈现和锚定Popover视图控制器。
你应该能够设置你的内容大小,使你的弹出窗口是半屏幕。