我正在尝试调整 segue 中弹出视图的大小。弹出窗口有效但位置错误。
为了设置位置,我使用以下代码尝试选择当前的 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。我应该吗?
尝试将框架转换为您的 ViewController.View 坐标
使用这条线
controller?.sourceRect = self.view.convert(cellFrame, from: detailsTable)
代替
controller?.sourceRect = CGRect(x: cellFrame.midX + 50, y: cellFrame.midY, width: 0, height: 0)
希望这有帮助