从UITableViewCell呈现UIAlertController [英] Presenting UIAlertController from UITableViewCell
问题描述
我正在尝试将警报添加到自定义 UITableViewCell
以显示 UIAlertView
我需要从<调用presentViewController code>的UIViewController 。但是,我不知道如何从 UITableViewCell
类访问当前的 UIViewController
实例。以下代码是我尝试使用扩展程序执行此操作。
I am trying to add alerts to a custom UITableViewCell
to present an UIAlertView
I need to call presentViewController from UIViewController
. However, I am unaware of how to gain access to the current UIViewController
instance from the UITableViewCell
class. The below code is my attempt to do this with an extension.
我收到此错误
表达式已解析为未使用的函数。
Expression resolved to unused function.
extension UIViewController
{
class func alertReminden(timeInterval: Int)
{
var refreshAlert = UIAlertController(title: "Refresh", message: "All data will be lost.", preferredStyle: UIAlertControllerStyle.Alert)
refreshAlert.addAction(UIAlertAction(title: "Ok", style: .Default, handler: { (action: UIAlertAction!) in
Alarm.createReminder("Catch the Bus",
timeInterval: NSDate(timeIntervalSinceNow: Double(timeInterval * 60)))
}))
refreshAlert.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: { (action: UIAlertAction!) in
println("Handle Cancel Logic here")
}))
UIViewController.presentViewController(refreshAlert)
}
}
class CustomRouteViewCell: UITableViewCell {
推荐答案
您可以使用此扩展程序查找显示单元格的viewController
You can use this extension to find the viewController that present the cell
extension UIView {
var parentViewController: UIViewController? {
var parentResponder: UIResponder? = self
while parentResponder != nil {
parentResponder = parentResponder!.nextResponder()
if parentResponder is UIViewController {
return parentResponder as! UIViewController!
}
}
return nil
}
}
或者使用 rootViewController
来呈现:
UIApplication.sharedApplication() .keyWindow?.rootViewController?.presentViewController(refreshAlert,animated:true,completion:nil)
这篇关于从UITableViewCell呈现UIAlertController的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!