2016-12-27 14 views
4

スウィフトでは、ナビゲーションバーの右上にあるバーボタンアイテムからポップオーバーを表示しようとしています。以下は私のコードです:iPhoneのナビゲーションバーのバーボタンからポップオーバーを表示

func showOptions(sender: UIBarButtonItem) { 
    let optionsVC = OptionsViewController(nibName: "OptionsViewController", bundle: nil) 
    optionsVC.delegate = self 
    optionsVC.modalPresentationStyle = .popover 
    optionsVC.preferredContentSize = CGSize(width: 200, height: 200) 

    present(optionsVC, animated: true, completion: nil) 

    let popController = optionsVC.popoverPresentationController 
    popController?.permittedArrowDirections = .up 
    popController?.delegate = self 
    popController?.barButtonItem = sender 
} 

func adaptivePresentationStyle(for controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle { 
    return .none 
} 

iPadとiPhoneではうまく動作します。私はドキュメンテーションと異なるWebページを見てきました。すべてが正しいと思われる。私のコードには何が欠けていますか?

答えて

6

唯一の問題は、ポップオーバーデリゲートを設定する前にOptionsViewControllerを提示していることです。だから最初にデリゲートを設定し、現在の関数を呼び出します。

let popController = optionsVC.popoverPresentationController 
popController?.permittedArrowDirections = .up 
popController?.delegate = self 
popController?.barButtonItem = sender 

present(optionsVC, animated: true, completion: nil) 
+0

ありがとうございます。ブログの多くは、私が実装した方法を示しています。 – Satyam

関連する問題