2016-07-25 5 views
0

私はかなり普通のポップオーバーを作成していますが、どこに置いても、呼び出し側ボタンの上を指しています。swift - Popoverポインタがその呼び出し側を指していません

ストーリーボードを介してポップオーバーを接続しました。 popoverviewcontrollerの中に私はボタンを含むビューを配置しました。 popoverviewcontrollerののviewDidLoad()のコードは次のとおりです。

override func viewDidLoad() { 
    super.viewDidLoad() 

    self.preferredContentSize = popoverView.frame.size 
     } 

私は一番上にあるボタンあまりにも近くに置いているため、それが起こっているのでしょうか?

enter image description here

+0

あなたのコードスニペットを共有できますか他に問題を分析するのが難しくなりますか? – SHN

+0

@SHNコードを今追加しました –

答えて

1

あなたはsourceViewとsourceRectプロパティを使用して、ポップオーバーのためのアンカーポイントを提供する必要があります。以下のようなポップオーバーのプロパティを設定するために提示するコントローラのprepareForSegueのFUNCの メイクの使用:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "SegueIdentifier" { 
     let destController = segue.destinationViewController 
     let popover = destController.popoverPresentationController; 

     destController.popoverPresentationController!.delegate = self 
     destController.preferredContentSize = CGSize(width: 320, height: 186) 
     popover?.sourceView = self.button; 
     popover?.sourceRect = self.button.bounds 
    } 
} 

この方法は、コードをよりモジュラーであり、あなたのコンテンツビューコントローラが他の場所で使用することができるあなたがここにもpreferredContentSizeを提供することができますあまりにも。

私の理解では、storyBoardのsegueの上にポップをリンクすると、sourceViewを提供したことになります。 Appleのドキュメントに従って、anchor pointを使用するにはsourceViewとsourceRectを併用します。私はあなたがストーリーボードを使ってあなたの場合のようにsourceRectを提供しないと推測していますが、OSはビューの原点をとります。なぜなら、Popoverの矢印は適切ではないからです。適切なsourceRectを指定すると、結果が向上します。

+0

私はすでにストーリーボードを介してアンカー(この場合は "Button4")とリンクしています。私はアンカーを提供していなかった場合、アプリケーションはエラーを与えていたでしょう。問題は、矢印がアンカーの少し上を指していることです。 –

+0

それは働いた。ありがとう! –

関連する問題