我的TableViewCell上有一个likebutton,我在其上添加了一个目标。目标执行一个函数来向API发送类似的东西。
//inside cellForRowAt
cell.likeMessage.tag = indexPath.row
cell.likeMessage.addTarget(self, action: #selector(handleLikes), for:.touchUpInside)
//in viewcontroller class
func handleLikes(_sender: UIButton){
let index = cell.tag
Alamofire.request("url")
}
现在我想在handleLikes中的请求之后设置likeMessage.isEnabled = false
。
这样做的最佳方法是什么,因为我无法打电话。
解决方案
我已经有了解决方案。我可以打电话:
_sender.isEnabled = false
答案 0 :(得分:2)
这样你可以喜欢/不喜欢这条消息。 如果您的按钮已启用,它将发出api请求。如果您的按钮被禁用,它将启用该按钮。
cell.likeMessage.tag = indexPath.row
cell.likeMessage.addTarget(self, action: #selector(handleLikes(_:)), for:.touchUpInside)
func handleLikes(_sender: UIButton){
if(_sender.isEnabled){
_sender.isEnabled = false
Alamofire.request("url")
}else{
_sender.isEnabled = true
}
}
如果要检索函数中的单元格,可以将indexPath.row作为参数传递,并检索函数中的单元格。
func handleLikes(row: Int){
let indexPath = NSIndexPath(row: row, section: 0)
let cell = self.yourTableViewName.cellForRow(at: indexPath as IndexPath) as! YourTableCell
//here you will have the cell and you can use it as you like
}
答案 1 :(得分:1)
在目标中传递按钮:
cell.likeMessage.tag = indexPath.row
cell.likeMessage.addTarget(self, action: #selector(handleLikes(_:)), for:.touchUpInside)
//in viewcontroller class
func handleLikes(_sender: UIButton){
_sender.isEnabled = false
let index = cell.tag
Alamofire.request("url")
}
答案 2 :(得分:0)
如果表格中不包含某个部分,您可以尝试刷新tableview中的单元格。
let indexPath = NSIndexPath(forRow: sender.tag, inSection: 0)
tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Top)
答案 3 :(得分:0)
有很多方法可以实现这一目标。
reloadRowsAtIndexPaths
cellForIndexPath
如果你想在likeButton上添加动画效果,请尝试第二或第三。 :d