调整popover ViewController的大小以适合要在UITableView中显示的数据

时间:2017-08-18 20:32:13

标签: ios swift tableview viewcontroller popover

我正在开发一个应用程序,我有两个视图控制器。第一个是当用户在TextField上执行长按手势时显示弹出窗口ViewController(用于第二个视图控制器)。下面是以编程方式完成的popover(在第一个视图控制器中)的代码:

        func longpressGestureTriggeredForIndicativeDesignWorkingLifeTextView (gestureRecognizer: UIGestureRecognizer) {

        if gestureRecognizer.state == UIGestureRecognizerState.began {

        self.view.endEditing(true)

       }

   let popController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "IndicativeDesignWorkingLifeVC")

   popController.modalPresentationStyle = UIModalPresentationStyle.popover
                popController.popoverPresentationController?.permittedArrowDirections = UIPopoverArrowDirection.up

   popController.popoverPresentationController?.delegate = self

   popController.popoverPresentationController?.sourceView = (indicativeDesignWorkingLifeTextView!)

   popController.popoverPresentationController?.sourceRect = (indicativeDesignWorkingLifeTextView as AnyObject).bounds

   self.present(popController, animated: true, completion: nil)

        }

当第二个视图控制器弹出显示它包含的UITableView时。 popover VIewController的大小远大于第二个View Controller中设置的表中包含的行数。

如何将popover ViewController的大小设置为在高度和宽度方面与第二个View Controller中设置的UITableView中包含的数据量相等?

1 个答案:

答案 0 :(得分:1)

在第二个View控制器的viewWillAppear中,您需要获取tableView单元格的行高,并计算单元格数以获取tableview的总高度。完成后,您可以使用self.preferredContentSize

更改弹出窗口的高度