如何使用 UITableViewCell 的 accessoryButton 作为 Popover 的锚点

How to use UITableViewCell's accessoryButton as anchor for a Popover

我尝试使用 UITableViewCell 的 accessoryButton 作为 Popover 的锚点,但无法使用故事板连接它。我以编程方式尝试使用 accessoryButtonTappedForRowWith 函数,这也不起作用。我怎样才能连接它?

如果您的 class 是 UITableViewController 的子 class 则使用:

override func tableView(_ tableView: UITableView, accessoryButtonTappedForRowWith indexPath: IndexPath) {
    print(indexPath.row)
}

检查示例代码:

class ViewController: UITableViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
        cell.textLabel?.text = "\(indexPath.row)"

        cell.accessoryType = UITableViewCellAccessoryType.detailButton
        return cell
    }

    override func tableView(_ tableView: UITableView, accessoryButtonTappedForRowWith indexPath: IndexPath) {
        print(indexPath.row)
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 10
    }
}

如果它是 UIViewController 的子class,那么您在该方法之前不需要 override,因此它将是:

func tableView(_ tableView: UITableView, accessoryButtonTappedForRowWith indexPath: IndexPath) {
    print(indexPath.row)
}

在这种情况下,不要忘记将 table 视图的 UITableViewDataSourceUITableViewDelegateViewController 连接起来。