save
这已连接到UIButton动作
有时在用户点击按钮时多次触发服务呼叫。
如何防止多次通话?
答案 0 :(得分:4)
示例::
var isAPICalling = false
@IBAction func btnTapped(_ sender: UIButton) {
if isAPICalling == false
{
isAPICalling = true
self.APICalling() // Your API calling method
}
}
在APICalling()
方法中,当您获得响应时,请设置isAPICalling = false
。
其他选项:
当您请求时间开始指示器和响应结束指示器之后,请使用ActivityIndicator
。因此,您无法点击按钮。
答案 1 :(得分:0)
您可以不使用标志就做一件事,如果您有按钮插座,则只需在执行按钮单击操作时选择按钮状态即可。
然后调用API,并在获得响应后将按钮状态设置为正常。因此,当用户单击按钮时,它将仅调用一次。
@IBAction func btnApiAction(_ sender: Any) {
if btnAPI.isSelected == false {
btnAPI.isSelected = true
//Call API here
}else {
//Do nothing here
}
}
如果API调用失败或出现任何错误,则还可以将按钮状态更改为正常,以便用户可以再次单击按钮。
答案 2 :(得分:0)
在调用API时禁用UIButton
。并在api调用完成时启用。
@IBAction func didTapButton(_ sender: UIButton) {
sender.isEnabled = false
Alamofire.request(/* Params */) { response in
sender.isEnabled = true
// parse response - response.result
}
}
我更喜欢将ActivityIndicatorView
添加到按钮视图中,并在完成后将其删除,以获得更好的用户体验。