我正在尝试在segue中调整popover视图的大小。 popover有效,但处于错误的位置。
要设置位置,我使用以下代码尝试选择当前的IndexPathForSelectedRow,然后设置弹出值。
它没有开火,我可以帮助找出原因。
我正在使用的代码如下:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "RecordToNotes" {
if let path = detailsTable.indexPathForSelectedRow {
let cellFrame = detailsTable.rectForRow(at: path)
let vc = segue.destination
vc.preferredContentSize = CGSize(width: 400, height: 400)
let controller = vc.popoverPresentationController
controller?.delegate = self
controller?.sourceView = detailsTable
controller?.sourceRect = CGRect(x: cellFrame.midX + 50, y: cellFrame.midY, width: 0, height: 0)
controller?.permittedArrowDirections = .right
}
}
}
路径返回nil。谢谢你的帮助。
更新:我在cellAtRow中设置了单元格。这是片段:
case 2: //notes
cell.detailPickerButton.isHidden = false
cell.detailPickerButton.isEnabled = true
cell.detailPickerButton.addTarget(self, action: #selector(detailsViewController.showNotesPanel(_:)), for: UIControlEvents.touchUpInside)
....
我没有压倒didSelectRow。我应该吗?
答案 0 :(得分:1)
尝试将框架转换为ViewController.View坐标
使用此行
controller?.sourceRect = self.view.convert(cellFrame, from: detailsTable)
而不是
controller?.sourceRect = CGRect(x: cellFrame.midX + 50, y: cellFrame.midY, width: 0, height: 0)
希望这有帮助