Function SWIFT-helper类回调

Function SWIFT-helper类回调,function,swift,ios8,uialertview,uialertcontroller,Function,Swift,Ios8,Uialertview,Uialertcontroller,为了稍微管理/缩短代码,我决定尝试创建一个帮助器类来管理所有警报 其思想是helper类将创建警报。当用户按下按钮时,它将发送一个回调,通知viewController上的代码按下了哪个按钮。基于此,我可以触发不同的代码位 目前,我的代码能够正确弹出警报,但我无法让它在按下按钮时发送回调 这是我迄今为止创建的警报管理器(为了简单起见,仍然是基本的): 在我的代码中,当我想显示警报时,我使用以下代码: let titleTxt:String = "title txt goes he

为了稍微管理/缩短代码,我决定尝试创建一个帮助器类来管理所有警报

其思想是helper类将创建警报。当用户按下按钮时,它将发送一个回调,通知viewController上的代码按下了哪个按钮。基于此,我可以触发不同的代码位

目前,我的代码能够正确弹出警报,但我无法让它在按下按钮时发送回调

这是我迄今为止创建的警报管理器(为了简单起见,仍然是基本的):

在我的代码中,当我想显示警报时,我使用以下代码:

        let titleTxt:String = "title txt goes here."
        let confirmTxt:String = "confirm"
        let cancelTxt:String = "cancel"
        let msgTxt:String = "some msg goes here."
        let showCancel:Bool = true
        let showConfirm:Bool = true
        let style:UIAlertControllerStyle = .ActionSheet

        let alert = alertMgr.showAlert(titleTxt, confirmText: confirmTxt, cancelText: cancelTxt, msgText: msgTxt, showCancel: showCancel, showConfirm: showConfirm, style:style, viewController: self)

        switch alert as Int! {
            case nil:
                println("nil value")
            case 0:
                println("cancel pressed")  //never gets fired. when button is pressed
            case 1:
                println("confirm pressed") //never gets fired. when button is pressed
            default:
                break
        }
主要的问题是,我似乎无法在按下按钮时回拨发送“myInt”值。我已经用[UIAlertController]搜索了这里几乎所有的问题,但没有找到任何能将我推向正确方向的提示


任何帮助都很好。

showarter
返回
myInt
的值在任何给定块有机会执行之前,解决方案是将完整的操作块作为
showarter
的参数传递。为了缩短签名,您可以准备一个带有文本、块和标志值的特殊类型,并使用函数处理此类型对象的数组。

谢谢您的回复。我不是100%确定我明白了,你能发布一个示例代码来帮助我更好地理解吗?与此同时,我会四处闲逛,看看能不能弄明白。谢谢:)当用户按下按钮时,会调用块
actionLeft
actionRight
,但函数
showart
会立即返回-您可以删除返回值,因为它是无用的。相反,您可以使用两个类型为
UIAlertAction
的参数来替换
actionLeft
actionRight
请注意,块和闭包之间存在差异,您可以在官方文档中阅读更多内容,但方法是相同的。您可以将任何带有闭包的标准方法作为函数/闭包原型的示例,例如,
UIView+animateWithDuration:delay:options:animations:completion:
我想我可能有点困惑。因此,在我从:showarter:中删除返回值并用两个UIAlertAction参数替换actionLeft/actionRight之后。我的VC在哪里发生回调?(这样我就可以根据确认/取消触发下一段代码)在这里感觉有点迷茫。另外,我读了更多关于块/闭包的内容。但是仍然没有100%看到这一点这是最好的部分:在调用
showart
之前,在
vc
上创建块,在这些块内,您可以调用
vc
的任何实例方法,使其类似于委托模式,或者您可以将大部分逻辑放在这些块内,因为它们在
vc
的范围内声明,它们可以轻松访问其变量和方法。
        let titleTxt:String = "title txt goes here."
        let confirmTxt:String = "confirm"
        let cancelTxt:String = "cancel"
        let msgTxt:String = "some msg goes here."
        let showCancel:Bool = true
        let showConfirm:Bool = true
        let style:UIAlertControllerStyle = .ActionSheet

        let alert = alertMgr.showAlert(titleTxt, confirmText: confirmTxt, cancelText: cancelTxt, msgText: msgTxt, showCancel: showCancel, showConfirm: showConfirm, style:style, viewController: self)

        switch alert as Int! {
            case nil:
                println("nil value")
            case 0:
                println("cancel pressed")  //never gets fired. when button is pressed
            case 1:
                println("confirm pressed") //never gets fired. when button is pressed
            default:
                break
        }