3

私はswiftが初めてで、使用方法を理解しようとしていますUIPopoverPresentationController

私のアプリで必要なのは、ボタンが押されると、画面のボタンからポップオーバーが表示され、画面の半分にxibファイルが表示されることです。今何が起こっているのかというと、2番目のView Controllerにセグエすることができましたが、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()       
   }    
}
4

1 に答える 1

5

これを実現する最も簡単な方法は、ストーリーボード ポップオーバー プレゼンテーション セグエを使用することです。提示されたView Controllerのインスタンス化を処理します。

  1. ポップオーバーを表示するボタンにポップオーバー プレゼンテーション セグエを追加します。セグエに識別子を与えます。これにより、ポップオーバーのボタンへの固定が処理されます。

(titleView) ボタンからのポップオーバー プレゼンテーション セグエ

  1. 提示されたビュー コントローラーのストーリーボード プレゼンテーションの詳細を設定します。tableView コントローラ (ナビゲーション コントローラに埋め込まれている) のページ シートプレゼンテーションを選択しました。

(ページシート) View Controller提示

  1. prepareForSegue:sender:提示されたView Controllerにパラメータを渡すコードを追加します。(私は Swift を学んでいません... Objective C については申し訳ありません。)
    - (void)prepareForSegue:(UIStoryboardSegue *)segue 送信者:(id)__未使用の送信者 {
        if ([[セグ識別子] 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;
        }
    }

セグエは、ポップオーバー ビュー コントローラーのインスタンス化、表示、固定など、実際のすべての作業を行います。

提示されたポップオーバー ビュー コントローラー

ポップオーバーが半分の画面になるように、コンテンツのサイズを設定できるはずです。

于 2015-05-19T19:19:34.593 に答える