嵌套回调函数不能正常工作 swift

Posted

技术标签:

【中文标题】嵌套回调函数不能正常工作 swift【英文标题】:Nested callback function not working properly swift 【发布时间】:2018-11-24 10:12:47 【问题描述】:

我正在尝试实现嵌套的完成处理程序,但由于某种原因,我的第二个处理程序在完成时没有触发。代码是这样的

//User presses a button on a cell. Code is in `cellForRowAtIndex...`
 cell.callback = 
            print("in CFRAIP")
            self.showPopUpDialog(completionHandler:  () -> Void in 
                print("AfterPOPUPDIALOG")
                self.requestBookingWithCompletionHandler(fetchBookingForDate: self.currentDate, row: indexPath.row)
            )
        


func showPopUpDialog(completionHandler: () -> Void )

    print("In show PopUPdialog")

    let alertController = UIAlertController(title: "Uppgifter", message: "Skriv in namn och telefonnummer", preferredStyle: .alert)

    let confirmAction = UIAlertAction(title: "Boka", style: .default)  (_) in

        //getting the input values from user
        self.bokadNamn = (alertController.textFields?[0].text)!
        self.bokadTelefon = (alertController.textFields?[1].text)!

        print("pressed ok in popup")
    

    let cancelAction = UIAlertAction(title: "Avbryt", style: .cancel)  (_) in

    //adding textfields to our dialog box
    alertController.addTextField  (textField) in
    textField.placeholder = "Namn"
    textField.layer.cornerRadius = 5
    
    alertController.addTextField  (textField) in
    textField.placeholder = "Telefonnummer"
    

    alertController.addAction(confirmAction)
    alertController.addAction(cancelAction)

    //finally presenting the dialog box
    self.present(alertController, animated: true, completion: nil)

这是我得到的照片:

in CFRAIP
In show PopUPdialog
pressed ok in popup

print("AfterPOPUPDIALOG") 没有被触发,并且在用户在PopUP 中按下确定后,我的网络请求也没有运行。我觉得我错过了一些非常简单的东西,但不幸的是,我看不见它......

【问题讨论】:

【参考方案1】:

在函数func showPopUpDialog(completionHandler: () -> Void ) 内部,您不会在任何地方调用完成处理程序completionHandler

如果不调用完成处理程序,打印语句print("AfterPOPUPDIALOG") 将如何执行?

在适当的地方调用您的完成处理程序completionHandler

【讨论】:

哇..哈哈我真的太累了。谢谢

以上是关于嵌套回调函数不能正常工作 swift的主要内容,如果未能解决你的问题,请参考以下文章

使用ajax请求数据不能正常访问的问题

Leaflet-标记点击事件工作正常,但回调函数中未定义类的方法

PowerRegisterSuspendResumeNotification - 提供的回调函数不能按预期工作

异步解决方案的发展历程

无法在回调函数中访问属性React

添加回调函数时 JavaScript 停止工作