UITableView单元格调用UIAlertController弹出窗口..." present"错误

时间:2018-03-14 21:04:17

标签: swift uitableview uialertcontroller

我有一个tableview定义,我试图在其中调用UIAlertController弹出窗口。我在原型tableView单元格中安装了一个按钮,当触摸该按钮时,IBAction处理该事件。问题是编译器不会让我失望。

cat.write(...)

生成编译器错误:"使用未解析的标识符' present'

以下是代码:

present(alertController, animated: true, completion: nil)

如果我评论一行,那么应用程序会为每个单元格正确运行...

2 个答案:

答案 0 :(得分:1)

你不能在tableView单元格中调用当前的AlertController,它需要一个UIViewController的子类或其他等效的子类,你应该使用委托或某种通知来处理它,请参阅我的答案同样的问题AlertControllerCallInsideCell

编辑:表单Docs,它是UIViewController中的实例方法。所以它不能在你的情况下在其他任何类型的其他类型(UITableViewCell)内调用

答案 1 :(得分:1)

无法拨打"现在"来自TableViewCell的方法,我建议在主控制器中使用一个函数来显示你的UIAlertController。

使用此代码,您可以实例化父驱动程序并执行任何可用的功能:

extension UIView {
    var parentViewController: UIViewController? {
        var parentResponder: UIResponder? = self
        while parentResponder != nil {
            parentResponder = parentResponder!.next
            if let viewController = parentResponder as? UIViewController {
                return viewController
            }
        }
        return nil
    }
}

//UITableViewCell
if let controller = self.parentViewController as? YourController
{
    controller.showAlert()
}

以下是与CollectionViewCell一起使用的示例: https://github.com/AngelH2/CollectionViewCell-Comunication/tree/master/CollectionCellAction