gpt4 book ai didi

ios - 如何为服务器上的表格 View 单元格中的每个帖子更新类似按钮

转载 作者:行者123 更新时间:2023-11-28 12:18:00 25 4
gpt4 key购买 nike

我正在尝试制作一款类似 Instagram 的应用。我已经在新闻源表中解析了 json,它们在每个单元格中都是 1 个类似按钮。当按下这个喜欢按钮时,它应该更新我拥有的 LIKEPOST json 并将喜欢的内容增加 1。我遇到的问题是更新喜欢按钮以喜欢每个单元格的帖子。

我附上代码。

这是按下时点赞按钮的功能。

@IBAction func likeBtnPressed(_ sender: Any) {
if !pressed {
let image = UIImage(named: "Like-1.png") as UIImage!
likeBtn.setImage(image, for: .normal)
pressed = true
} else
{
let image = UIImage(named: "liked.png") as UIImage!
likeBtn.transform = CGAffineTransform(scaleX: 0.15, y: 0.15)

UIView.animate(withDuration: 2.0,
delay: 0,
usingSpringWithDamping: 0.2,
initialSpringVelocity: 6.0,
options: .allowUserInteraction,
animations: { [weak self] in
self?.likeBtn.transform = .identity
},
completion: nil)
likeBtn.setImage(image, for: .normal)
pressed = false
likeUpdateServer()

}

}

这是更新like的函数:

func likeUpdateServer()
{
let userDefaults = UserDefaults.standard
let value = userDefaults.string(forKey: "api_token")
let api_token : String! = value
let post_id = "9231"
print(api_token)
print(post_id)


var request = URLRequest(url: URL(string: "\(URL_BASE)\(LIKEPOST)")!)
request.httpMethod = "POST"
let postString = "api_token=\(api_token!)&&post_id=\(post_id)"
request.httpBody = postString.data(using: .utf8)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data, error == nil else { // check for fundamental networking error
print("error=\(String(describing: error))")
print("cant run")
return
}

if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 { // check for http errors
print("statusCode should be 200, but is \(httpStatus.statusCode)")
print("response = \(String(describing: response))")



}
else {
let responseString = String(data: data, encoding: .utf8)
print("responseString = \(String(describing: responseString))")
}
}
}

这是我的 cellForRowAt 函数:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell : PostDataTableViewCell = self.feedTable.dequeueReusableCell(withIdentifier: "contentViewReuse") as! PostDataTableViewCell
let post = posts[indexPath.row]
print(post)
cell.configureCell(post : post)
return cell
}

最佳答案

如果你的请求参数是正确的,那么在你创建一个dataTask之后你需要恢复它,所以在likeUpdateServer方法的末尾你应该添加这一行

task.resume()

After you create the task, you must start it by calling its resume() method.

您可以使用以下代码找到单元格的索引路径。

let point : CGPoint = sender.convert(.zero, tableView)
let indexPath = tableView!.indexPathForItem(at: point)

将这段代码添加到您的按钮点击方法中,并使用您可以找到 postId 的 indexPath。

此外,您应该标记喜欢的单元格(我希望它会从服务器返回)一旦您喜欢一个单元格,您就可以在本地帖子模型中更新它。

关于ios - 如何为服务器上的表格 View 单元格中的每个帖子更新类似按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45790440/

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