Alamofire服务呼叫多次

时间:2018-12-14 11:51:37

标签: ios swift alamofire

save

这已连接到UIButton动作

有时在用户点击按钮时多次触发服务呼叫。

如何防止多次通话?

3 个答案:

答案 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添加到按钮视图中,并在完成后将其删除,以获得更好的用户体验。