我正在向用户呈现一个< code>UIAlertView,但我不知道如何编写处理程序。这是我的尝试:
let alert = UIAlertController(title: "Title",
message: "Message",
preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "Okay",
style: UIAlertActionStyle.Default,
handler: {self in println("Foo")})
我在Xcode中遇到了很多问题。
文档说方便 init(标题:String!,样式样式:UIAlertActionStyle,处理程序处理程序:((UIAlertAction!) -
目前我对整个街区/封闭区有点摸不着头脑。任何建议都非常感谢。
你可以使用 swift 2 完成这个简单操作:
let alertController = UIAlertController(title: "iOScreator", message:
"Hello, world!", preferredStyle: UIAlertControllerStyle.Alert)
alertController.addAction(UIAlertAction(title: "Dismiss", style: UIAlertActionStyle.Destructive,handler: { action in
self.pressed()
}))
func pressed()
{
print("you pressed")
}
**or**
let alertController = UIAlertController(title: "iOScreator", message:
"Hello, world!", preferredStyle: UIAlertControllerStyle.Alert)
alertController.addAction(UIAlertAction(title: "Dismiss", style: UIAlertActionStyle.Destructive,handler: { action in
print("pressed")
}))
以上所有答案都是正确的,我只是展示了另一种方法。
函数是Swift中的一级对象。因此,如果不想使用闭包,也可以使用适当的签名定义函数,然后将其作为<code>处理程序</code>参数传递。观察:
func someHandler(alert: UIAlertAction!) {
// Do something...
}
alert.addAction(UIAlertAction(title: "Okay",
style: UIAlertActionStyle.Default,
handler: someHandler))
在处理程序中不要放self,而要放(alert: UIAlertAction!).这应该使您的代码看起来像这样
alert.addAction(UIAlertAction(title: "Okay",
style: UIAlertActionStyle.Default,
handler: {(alert: UIAlertAction!) in println("Foo")}))
这是在Swift中定义处理程序的正确方法。
正如Brian在下面指出的,也有更简单的方法来定义这些处理程序。书中讨论了使用他的方法,请看标题为闭包的部分
问题内容: 我向用户展示了一个,但我不知道如何编写处理程序。这是我的尝试: 我在Xcode中遇到很多问题。 该文件说 目前,整个块/封盖都让我有些头疼。任何建议都非常感谢。 问题答案: 而不是将自己放在处理程序中,而应放置(提示:UIAlertAction!)。这应该使您的代码看起来像这样 这是在Swift中定义处理程序的正确方法。 正如Brian在下面指出的那样,还有更简单的方法来定义这些处理程
我有一个UITableView,在委托(视图控制器)中,我已经实现了该函数 然后,我测试编辑样式 作为删除的一部分,我请求用户确认,如果他们选择“是”,与该行相关的项目将被删除,如果他们选择“否”,我将重置编辑样式。 我似乎遇到的问题是没有调用任何完成处理程序。我在其他地方使用过这种格式,没有任何问题。 该警报将显示标题、消息以及按钮“取消”和“是”。如果我点击其中任何一个,什么都不会发生。警报被
如何在Swift中获取的处理程序。它是在初始化时设置的,但是我没有找到任何属性来保持动作的闭包。闭包是
我正在尝试将我的UIAlertViews更改为UIAlertController。我为它设置了这个操作: 但是,处理程序直到动作被点击大约一秒钟后才运行。有什么方法可以加快速度吗?
我只想确认UIAlertAction的处理程序是一个非转义lambda函数? 我做了ctrl右键单击并查找了UIAlertAction定义,默认情况下它看起来不像转义。这意味着我应该做 在所有UIAlertAction完成块中使用wself而不是self? 在UIKit下 其中处理程序未显示@escaping
亲爱的史塔克弗劳尔, Swift/UIKit上的任何专家都可以在下面的屏幕截图中看到我做错了什么吗? Xcode似乎找不到基于标题、样式和处理程序的UIAlertAction的方便初始值设定项,我也不知道有任何其他方式来初始化UIAlertAction。实际上,处理器不会为零。 先谢谢你了, 杰米