Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode UIPopoverPresentationController_Xcode_Swift_Ios8_Uipresentationcontroller - Fatal编程技术网

Xcode UIPopoverPresentationController

Xcode UIPopoverPresentationController,xcode,swift,ios8,uipresentationcontroller,Xcode,Swift,Ios8,Uipresentationcontroller,我是swift新手,正在尝试了解如何使用UIPopoverPresentationController 在我的应用程序中,我需要的是,当按下按钮时,屏幕按钮上的弹出框将显示,屏幕的一半显示一个xib文件。 现在发生的事情是,我设法转到第二个视图控制器,但不知道如何加载xib文件,以及如何使弹出窗口从按钮变成屏幕的一半。这是我的密码 import UIKit class BaseViewController: UIViewController , UIPopoverPresentationCon

我是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演示序列。它将为您处理显示的视图控制器实例化

  • 向显示popover的按钮添加popover演示序列。给segue一个标识符。这将处理将弹出框锚定到按钮的操作:
  • 为显示的视图控制器设置情节提要显示详细信息。我已经为tableView控制器(嵌入在导航控制器中)选择了页面设计演示文稿
  • 添加
    prepareforsgue:sender:
    代码以将任何参数传递给显示的视图控制器。(我还没有学会斯威夫特……对不起,我的目标是C。)
  • -(void)prepareforsgue:(UIStoryboardSegue*)segue发送方:(id)\u未使用的发送方{ 如果([[segue identifier]IsequalString:@“showBIBLESelectBookChapter”]){ UINavigationController*navigationController=segue.destinationViewController; 如果([navigationController.topViewController是类:[BIBLESelectViewController类]]){ BIBLESelectViewController*selectViewController=(BIBLESelectViewController*)navigationController.topViewController; 选择ViewController.initialBookChapterVerse=self.bookChapterVerse; } UIPopoverPresentationController*popoverPresentationController=navigationController.popoverPresentationController; popoverPresentationController.delegate=self; } } segue将为您完成所有实际工作,实例化、演示和锚定popover视图控制器

    您应该能够设置您的内容大小,使您的popover是半屏幕

    - (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; } }