ios – 来自UIAlertController的self.navigationController?.popViewControllerAnimated

前端之家收集整理的这篇文章主要介绍了ios – 来自UIAlertController的self.navigationController?.popViewControllerAnimated前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是新手,但我想我已经掌握了它.这让我的进步很难过.

我想要做的是当我们无法找到他的查询的相关数据时向用户抛出错误消息,然后继续将他带回到之前的ViewController.

但是,我在这方面遇到了麻烦.在我添加操作的行上,我收到以下错误:’UIViewController?’不是Void的子类型

let alertController = UIAlertController(title: "Oops",message: "We couldn't find any data for this title,sorry!",preferredStyle: UIAlertControllerStyle.Alert)

alertController.addAction(UIAlertAction(title: "Ok",style: .Default,handler: { action in
    self.navigationController?.popViewControllerAnimated(true)   
}))

我该怎么做呢?我错过了一些明显的东西吗我试着搞砸了被弃用的UIAlertView,但却没有变得更聪明.

解决方法

只需在闭包体中添加一个显式的return语句:
alertController.addAction(UIAlertAction(title: "Ok",handler: { action in
    self.navigationController?.popViewControllerAnimated(true)
    return
}))

发生这种情况的原因是单个语句闭包被处理为返回值,因此编译器使用popViewControllerAnimated的返回值,这不足为奇是UIViewController?.显式返回语句避免了这种情况.

此行为记录在Implicit Returns from Single-Expression Closures

猜你在找的iOS相关文章