2016-08-02 4 views
2

のために私に間違ったフレームを与えるUIBarButtonItem私は、ラベル管理と左の隅に<code>UIBarButtomItem</code>とツールバーを持ってpopoverPresentationController

enter image description here

私はそれをタップしたときにポップオーバーを表示する必要があるが、それはに表示されます。間違った場所、それが画面の左上に表示されます。

enter image description here

これはポップオーバーを開くための機能です。

空のスナップショットで結果をレンダリングされていないビューをスナップショット

:私は管理バーボタンをタッチすると

// this IBAction is assigned only to the Admin bar button item 
@IBAction func openAdmin(sender: UIBarButtonItem) { 
    let alertController = UIAlertController(title: nil, message: "Elige una opción", preferredStyle: .ActionSheet) 

    // action button initializations... ... ... 

    let barButtonItemSize = sender.valueForKey("view") 

    alertController.popoverPresentationController?.sourceView = self.view 
    alertController.popoverPresentationController?.sourceRect = barButtonItemSize!.frame 

    presentViewController(alertController, animated: true, completion: nil) 
} 

はまた、私は、コンソール上でこの警告が表示されます。スナップショットやスナップショットを表示する前に少なくとも1回レンダリングされていることを確認する

私は間違っていますか?または管理者のトップにポップオーバーを表示するには何が必要ですか?

答えて

3

あなたの答えのための

alertController.popoverPresentationController?.sourceView = sender 
alertController.popoverPresentationController?.barButtonItem = sender 
+0

おかげで

alertController.popoverPresentationController?.sourceView = self.view alertController.popoverPresentationController?.sourceRect = barButtonItemSize!.frame 

を交換してください。送信者が 'UIView'タイプではないので、送信者をsourceViewに割り当てることができません。 – pableiros

+0

次に、 'alertController.popoverPresentationController?.barButtonItem = sender'を設定しようとしています。[this SO post](http://stackoverflow.com/questions/36830807/how-to-implement-uialertcontroller-as-popoverwith-arrow-direction- up-in-a-uiba) – Lion

+0

それは動作します!ありがとうございました!!しかし、私はまだコンソール上で警告を出しています。レンダリングされていないビューをスナップショットすると、空のスナップショットが作成されます。画面の更新後にスナップショットまたはスナップショットを作成する前に、ビューが少なくとも1回レンダリングされていることを確認してください。 – pableiros

関連する問題