从 UIAlertController 中添加对函数的调用 [重复]
Posted
技术标签:
【中文标题】从 UIAlertController 中添加对函数的调用 [重复]【英文标题】:Add a call to a function from within a UIAlertController [duplicate] 【发布时间】:2018-04-05 16:42:08 【问题描述】:我的 ios 应用中有一个警报,警报上有两个按钮。当用户选择该选项时,我想调用我拥有的一个名为 searchTheWeb() 的函数:
alert.addAction(UIAlertAction(title: "Close", style: UIAlertActionStyle.default, handler: nil))
alert.addAction(UIAlertAction(title: "Search The Web!", style: UIAlertActionStyle.default, handler: nil))
func searchTheWeb()
let word = self.userInfo.text! + self.faceResults.text! + self.labelResults.text!
if let encoded = word.addingPercentEncoding(withAllowedCharacters: .urlFragmentAllowed), let url = URL(string: "https://www.google.com/#q=\(encoded)")
if #available(iOS 10.0, *)
UIApplication.shared.open(url, options: [:], completionHandler: nil)
else
UIApplication.shared.openURL(url)
所以在那个 addAction 中,标题为 Search The Web!如何调用该函数?
【问题讨论】:
这就是handler
参数的用途????
@vadian 我以为我自己调用了句柄中的函数,但这不起作用。在下面查看 AdamPro 的答案,这很有效!
值得一读documentation
【参考方案1】:
您只需将您声明 searchTheWeb 操作的方式更改为以下内容:
let search = UIAlertAction(title: "Search The Web!", style: .default) [weak self] _ in
self?.searchTheWeb()
alert.addAction(search)
【讨论】:
这很有魅力,感谢 Adam!【参考方案2】:使用警报处理程序
alert.addAction(UIAlertAction(title: "Close", style: UIAlertActionStyle.default, handler: nil))
let search = UIAlertAction(title: "Search The Web!", style: UIAlertActionStyle.default, handler: (action) -> Void in
self.searchTheWeb()
)
alert.addAction(search)
func searchTheWeb()
let word = self.userInfo.text! + self.faceResults.text! + self.labelResults.text!
if let encoded = word.addingPercentEncoding(withAllowedCharacters: .urlFragmentAllowed), let url = URL(string: "https://www.google.com/#q=\(encoded)")
if #available(iOS 10.0, *)
UIApplication.shared.open(url, options: [:], completionHandler: nil)
else
UIApplication.shared.openURL(url)
【讨论】:
以上是关于从 UIAlertController 中添加对函数的调用 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
从 UINavigationItem 扩展中呈现 UIAlertController
如何在 UIAlertController 上添加动态按钮?
如何在 UIAlertController 中添加 UIPickerView?
UIAlertController - 将自定义视图添加到操作表