Swift 3:从动态uitableviewcell内的按钮到uiviewcontroller的popover连接

时间:2017-02-13 20:28:30

标签: ios swift uitableview swift3 uipopovercontroller

您好我试图将视图控制器与表视图单元格中的uibutton连接为弹出连接。我有一个小视图控制器,里面有2个按钮,应该是我的popover。我有一个桌面视图,里面有很多细胞和按钮。当用户点击特定按钮时,我想在单击的按钮上打开一个带有锚点的弹出窗口,就像静态内容上的弹出连接的默认行为一样。

但在处理动态内容时,我在故事板中收到此错误: 无法编译连接...

以下是我尝试做的一些示例以及我得到的错误: enter image description here

我不想使用像隐藏的1个像素按钮这样的脏黑客。我试图创建一个自定义segue,但它也不能正常工作。

那么实现这一目标的最佳方法是什么?

这就是这个例子的代码:

import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

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

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! CustomTableViewCell

        let button = cell.customButton

        return cell
    }

}


import UIKit

class CustomTableViewCell: UITableViewCell {

    @IBOutlet weak var customButton: UIButton!

    @IBAction func buttonTapped(_ sender: Any) {


    }

    override func awakeFromNib() {
        super.awakeFromNib()
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)
    }

}

1 个答案:

答案 0 :(得分:0)

如果你的弹出视图只有按钮,你可以使用UIAlertController,但箭头只会出现在iPad中

@IBAction func buttonTapped(_ sender: Any) {

let alertVC = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
alertVC.modalPresentationStyle = .popover
//setup
if let popoverController = alertVC.popoverPresentationController  {
        popoverController.permittedArrowDirections = .any
        popoverController.sourceView = self
        popoverController.sourceRect = self.bounds
    }
}
tableVC.present(alertVC, animated: true, completion: nil)