gpt4 book ai didi

ios - 参数作为按钮选择器 - iOS (Swift)

转载 作者:行者123 更新时间:2023-11-30 12:39:35 26 4
gpt4 key购买 nike

当网络连接缓慢或断开连接时,我尝试执行内部应用程序通知。

如果用户想要重新加载,我想调用传入参数(回调)的函数,但 Xcode 不允许我这样做:

Argument of '#selector' cannot refer to parameter 'callback'

这是我的代码:

func listenForFirebaseConnection(callback: @escaping () -> Void) {
FireDataUtil().getBase().child(".info/connected").observeSingleEvent(of: .value, with: { (snapshot) in
if snapshot.exists() {
let isConnected = snapshot.value as! Bool?
if isConnected != nil && isConnected == false {

let view = MessageView.viewFromNib(layout: .MessageView)
view.button?.isHidden = false

// Theme message elements with the warning style.
view.configureTheme(.error)

// Add a drop shadow.
view.configureDropShadow()

// Set message title, body, and icon. Here, we're overriding the default warning
// image with an emoji character.
view.configureContent(title: "Network Issue", body: "It looks like your network connection is either slow or disconnected")
view.button?.setTitle("Reload", for: .normal)

view.button?.addTarget(self, action: #selector(callback), for: .touchUpInside)
var config = SwiftMessages.Config()

config.presentationContext = .window(windowLevel: UIWindowLevelStatusBar)
config.presentationStyle = .bottom
config.duration = .seconds(seconds: 5)

// Show the message.
SwiftMessages.show(config: config, view: view)
}
}
})
}

最佳答案

尝试这样:

var objCallback:() -> Void)?

func listenForFirebaseConnection(callback: @escaping () -> Void) {
FireDataUtil().getBase().child(".info/connected").observeSingleEvent(of: .value, with: { (snapshot) in
if snapshot.exists() {
let isConnected = snapshot.value as! Bool?
if isConnected != nil && isConnected == false {

self.objCallback = callback
let view = MessageView.viewFromNib(layout: .MessageView)
view.button?.isHidden = false

// Theme message elements with the warning style.
view.configureTheme(.error)

// Add a drop shadow.
view.configureDropShadow()

// Set message title, body, and icon. Here, we're overriding the default warning
// image with an emoji character.
view.configureContent(title: "Network Issue", body: "It looks like your network connection is either slow or disconnected")
view.button?.setTitle("Reload", for: .normal)

view.button?.addTarget(self, action: #selector(objCallback), for: .touchUpInside)
var config = SwiftMessages.Config()

config.presentationContext = .window(windowLevel: UIWindowLevelStatusBar)
config.presentationStyle = .bottom
config.duration = .seconds(seconds: 5)

// Show the message.
SwiftMessages.show(config: config, view: view)
}
}
})

}

这可能对你有帮助

关于ios - 参数作为按钮选择器 - iOS (Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42389010/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com