Swift 3 indexPathForSelectedRow 不正确

问题描述 投票:0回答:1

我正在尝试调整 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。感谢您的帮助。

ios swift uitableview
1个回答
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)

希望这有帮助

© www.soinside.com 2019 - 2024. All rights reserved.