UIPopoverPresentationController
Posted
技术标签:
【中文标题】UIPopoverPresentationController【英文标题】: 【发布时间】:2015-05-18 15:51:56 【问题描述】:我是 swift 新手,并试图了解如何使用 。
我在我的应用程序中需要的是,当按下按钮时,屏幕按钮上的弹出窗口将在屏幕的一半上显示 xib 文件。 现在发生的事情是我设法继续使用第二个视图控制器,但不知道如何加载 xib 文件以及如何使弹出框成为按钮屏幕的一半。这是我的代码
import UIKit
class BaseViewController: UIViewController , Delegate
@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()
【问题讨论】:
【参考方案1】:实现这一点的最简单方法是通过情节提要弹出框演示文稿 segue。它将为您处理呈现的视图控制器实例化。
-
向将显示弹出框的按钮添加弹出框演示序列。给 segue 一个标识符。这将处理将弹出框锚定到按钮:
-
为呈现的视图控制器设置情节提要演示详细信息。我为 tableView 控制器(嵌入在导航控制器中)选择了 Page Sheet 演示文稿。
-
添加
prepareForSegue:sender:
代码以将任何参数传递给您呈现的视图控制器。 (我还没有学过 Swift ......对不起目标 C。)
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)__unused sender if ([[segue identifier] isEqualToString:@"showBIBLESelectBookChapter"]) UINavigationController *navigationController = segue.destinationViewController; if ([navigationController.topViewController isKindOfClass:[BIBLESelectViewController 类]]) BIBLESelectViewController *selectViewController = (BIBLESelectViewController *)navigationController.topViewController; selectViewController.initialBookChapterVerse = self.bookChapterVerse; UIPopoverPresentationController *popoverPresentationController = navigationController.popoverPresentationController; popoverPresentationController.delegate = self;
segue 将为您完成所有实际工作,实例化、呈现和锚定弹出视图控制器。
您应该能够设置内容大小,使弹出框为半屏。
【讨论】:
以上是关于UIPopoverPresentationController的主要内容,如果未能解决你的问题,请参考以下文章