我是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()
}
}
答案 0 :(得分:5)
实现这一目标的最简单方法是通过故事板弹出式演示文稿segue。它将为您处理呈现的视图控制器实例化。
prepareForSegue:sender:
代码,将任何参数传递给您呈现的视图控制器。 (我还没有学过Swift ......对于Objective C抱歉。)- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)__unused sender { if ([[segue identifier] isEqualToString:@"showBIBLESelectBookChapter"]) { UINavigationController *navigationController = segue.destinationViewController; if ([navigationController.topViewController isKindOfClass:[BIBLESelectViewController class]]) { BIBLESelectViewController *selectViewController = (BIBLESelectViewController *)navigationController.topViewController; selectViewController.initialBookChapterVerse = self.bookChapterVerse; } UIPopoverPresentationController *popoverPresentationController = navigationController.popoverPresentationController; popoverPresentationController.delegate = self; } }
segue将为您完成所有实际工作,实例化,呈现和锚定popover视图控制器。
您应该可以设置内容大小,以便弹出窗口为半屏。