我如何处理对单个按钮的多次单击操作以进行api调用并从api获取真实响应

时间:2018-07-05 13:22:31

标签: ios swift api

我只想知道处理单个按钮上的多次单击事件的方法(例如,如果我多次点击FACEBOOK之类的按钮,那么它可能会完美工作) 下面的代码给了您一些想法,如果有合适的解决方案,请尽快给我。

LikeViewController类:UIViewController {

//MARK:- Outlets
@IBOutlet weak var btnLike: UIButton!
@IBOutlet weak var lblDescription: UILabel!

//MARK:- Variables
var objModelWatchList:WatchListModel?
var objUser = WatchListModel()

//MARK:- Lifecycle methods
override func viewDidLoad() {
    super.viewDidLoad()
    getWatchList()

}

//MARK:- Functions

//Function for prepare UI
func prepareUI() {
    btnLike.isSelected = isLike()
}

//Function for prepare data from api
func getWatchList() {
    objUser.videoId = 216
    objUser.type = "VIDEO"
    APIService.sharedInstance.getWatchList(parameters: objUser.toDictionary() as [String : AnyObject], success: { (dataSuccess) -> (Void) in
        self.objModelWatchList = dataSuccess
        DispatchQueue.main.async {
            self.prepareUI()
            self.lblDescription.text = self.objModelWatchList?.message
        }
    }) { (resultFailure) -> (Void) in
        print(resultFailure)
    }
}


//Function to varify the status of like
func isLike() -> Bool {
    return objModelWatchList!.status == 1 ? true : false
}

//MARK:- Actions
@IBAction func btnLikeClicked(_ sender: UIButton) {
            sender.isSelected = !sender.isSelected
            self.getWatchList()
}

}

谢谢。

2 个答案:

答案 0 :(得分:0)

您必须在API调用时禁用按钮,并且在处理该响应后u会得到正确的响应时,您必须启用它。

它对我有用。我有一个同样的问题。

答案 1 :(得分:0)

如果您提到管理多个事件点击...我建议使用tapGestureRecognizer或变体,例如,这些可以管理您评论的事件...

  • 单击,双击或多次点击以触发功能事件
  • 按住[UILongPressGestureRecognizer]

如果您在不同情况下引用称为“ somes函数”的同一按钮,我建议例如使用un标签按钮:

function examplefunctionA(){
  //Another Proccess
  //Another Proccess
  self.button.tag = 2
}

function examplefunctionB(){
  //Another Proccess
  //Another Proccess
  self.button.tag = 1
}

func buttonclicked(sender: UIButton) {
    if sender.tag == 1 {
       examplefunctionA()
    }else if sender.tag == 2 {
       examplefunctionB()
    }
}