我有一个tableview定义,我试图在其中调用UIAlertController弹出窗口。我在原型tableView单元格中安装了一个按钮,当触摸该按钮时,IBAction处理该事件。问题是编译器不会让我失望。
cat.write(...)
生成编译器错误:"使用未解析的标识符' present'
以下是代码:
present(alertController, animated: true, completion: nil)
如果我评论一行,那么应用程序会为每个单元格正确运行...
答案 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