UIPopoverPresentationController
UIPopoverPresentationController
我是 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()
}
}
完成此操作的最简单方法是通过故事板弹出式演示文稿转场。它将为您处理呈现的视图控制器实例化。
- 向将显示弹出窗口的按钮添加弹出窗口显示转场。给 segue 一个标识符。这将处理将弹出窗口锚定到按钮:
- 为呈现的视图控制器设置故事板呈现细节。我为 tableView 控制器(嵌入在导航控制器中)选择了 Page Sheet 演示文稿。
- 添加
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 将为您完成所有实际工作,实例化、呈现和锚定弹出视图控制器。
您应该能够设置您的内容大小,以便您的弹出窗口是半屏。
我是 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()
}
}
完成此操作的最简单方法是通过故事板弹出式演示文稿转场。它将为您处理呈现的视图控制器实例化。
- 向将显示弹出窗口的按钮添加弹出窗口显示转场。给 segue 一个标识符。这将处理将弹出窗口锚定到按钮:
- 为呈现的视图控制器设置故事板呈现细节。我为 tableView 控制器(嵌入在导航控制器中)选择了 Page Sheet 演示文稿。
- 添加
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 将为您完成所有实际工作,实例化、呈现和锚定弹出视图控制器。
您应该能够设置您的内容大小,以便您的弹出窗口是半屏。