2017-07-07 10 views
1

私はすべてのセルのボタンでテーブルビューを作っています。ボタンを押すとポップオーバーが表示されますが、問題はポップオーバーをテーブルビュー上に配置することですが、tableViewを押し下げてボタンを押すとpopoverはselectボタンのガイドラインとして使用するので、popoverは上がります。次の画像では、私が説明しようとしているものを見ることができます。TableViewの中心ポップオーバーはどのようになっていますか?

enter image description here

あなたがセルからボタンを押したときに使用されるコード:

だから、
func buttonPressed(sender: UIButton){ 

    let buttonTag = sender.tag 

    let width = self.view.frame.midX + (self.view.frame.midX/2) 

    let height = info[buttonTag].nota.calculateHeight(width: width, sizeFont: 16.0) + 40 

    let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 

    let vc = storyboard.instantiateViewController(withIdentifier: "NotaTable") as! Popever 

    vc.modalPresentationStyle = UIModalPresentationStyle.popover 
    vc.popoverPresentationController?.delegate = self 
    vc.preferredContentSize = CGSize(width: width, height: height + 115) 
    vc.width = width 

    let popover: UIPopoverPresentationController = vc.popoverPresentationController! 
    popover.delegate = self 
    popover.sourceView = self.view 

    popover.sourceRect = CGRect(x: self.view.frame.midX - (width/2), y: self.view.frame.midY - (height/2), width: width, height: height) 

    popover.permittedArrowDirections = UIPopoverArrowDirection(rawValue: 0) 

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

} 

、どのように私はポップオーバーは何ボタン押しに関係なく、中央に焦点を当てないように作るのですか?

ありがとうございます!

答えて

0

私は私が去るself.view.boundsここ

let popover: UIPopoverPresentationController = vc.popoverPresentationController! 
    popover.delegate = self 
    popover.sourceView = self.view 

    popover.sourceRect = CGRect(x: (self.view.bounds.midX - (width/2)), y: (self.view.bounds.midY - (height/2)), width: width, height: height) 

で交換self.view.frameでデxとyの位置を完了する代わりに 、popover.sourceRectを変更し、これを解決する方法を見つけますあなたはフレームと境界の違い:

UIViewの境界は、座標系(0,0)に対する位置(x、y)とサイズ(幅、高さ)で表される四角形です。

UIViewのフレームは、その中に含まれるスーパービューに対する位置(x、y)およびサイズ(幅、高さ)として表される長方形です。

I got it from here

関連する問題