gpt4 book ai didi

ios - 如何使用分页更改 tableview 自定义单元格中 imageview 的图像。

转载 作者:行者123 更新时间:2023-11-30 11:59:19 25 4
gpt4 key购买 nike

我在使用分页的应用程序中使用表格 View 。请求被发送到服务器,并返回大小为 10 的批处理的项目。到目前为止,一切正常。现在我的表格 View 单元格中有一个 ImageView (自定义)。我希望当用户点击该 ImageView 的图像时切换它。我通过以下方式尝试了这个事情:

TableviewController:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell : AdventureTableViewCell = tableView.dequeueReusableCell(withIdentifier: "adventureCell" , for: indexPath) as? AdventureTableViewCell else {
fatalError("The dequeued cell is not an instance of AdventureViewCell.")
}

cell.adventureName.text = adventureList[indexPath.row]
cell.amountLabel.text = "\(adventurePriceList[indexPath.row])$"

cell.favouriteButtonHandler = {()-> Void in
if(cell.favouriteButton.image(for: .normal) == #imageLiteral(resourceName: "UnselectedFavIcon"))
{
cell.favouriteButton.setImage(#imageLiteral(resourceName: "FavSelectedBtnTabBar"), for: .normal)
}
else
{
cell.favouriteButton.setImage(#imageLiteral(resourceName: "UnselectedFavIcon"), for: .normal)
}

}
}

自定义单元格:

class AdventureTableViewCell: UITableViewCell {

@IBOutlet weak var adventureName: UILabel!
@IBOutlet weak var adventureImage: UIImageView!
@IBOutlet weak var amountLabel: UILabel!
@IBOutlet weak var favouriteButton: UIButton!
@IBOutlet weak var shareButton: UIButton!

var favouriteButtonHandler:(()-> Void)!
var shareButtonHandler:(()-> Void)!

override func awakeFromNib() {
super.awakeFromNib()
adventureName.lineBreakMode = .byWordWrapping
adventureName.numberOfLines = 0
}

override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}

override func prepareForReuse() {
adventureImage.af_cancelImageRequest()
adventureImage.layer.removeAllAnimations()
adventureImage.image = nil
}

@IBAction func favouriteButtonTapped(_ sender: Any) {
self.favouriteButtonHandler()
}

现在我面临的问题是,如果用户点击任何单元格上的第一个 ImageView ,它会更改其图像,但与此同时,每第四个单元格都会更改其图像。例如,如果我点击了第一个单元格的 imageview,它的图像会发生变化,但单元格 5、9、13...的图像也会发生变化。

我的代码有什么问题吗?我错过了什么吗?由于分页,indexPath.row 出现了一些问题,但我不知道它到底是什么以及如何解决它。我发现了一个类似的问题,但其接受的解决方案对我不起作用,因此任何帮助将不胜感激。

最佳答案

如果您需要切换图像并且在滚动后也应该处于最后一个切换状态意味着您需要通过比较 cellfoeRowAtIndex 内的索引位置和滚动状态来使用数组来存储索引位置和切换状态您可以获得最后的切换状态,这是保留最后的切换索引的可能方法之一,即使您滚动 TableView ,否则您将丢失最后的切换位置

 if self.toggleStatusArray[indexPath.row]["toggle"] as! String == "on"{
cell.favouriteButton.setImage(#imageLiteral(resourceName: "FavSelectedBtnTabBar"), for: .normal)
} else {
cell.favouriteButton.setImage(#imageLiteral(resourceName: "UnselectedFavIcon"), for: .normal)
}


cell.favouriteButtonHandler = {()-> Void in

if self.toggleStatusArray[indexPath.row]["toggle"] as! String == "on"{
//Assign Off status to particular index position in toggleStatusArray

} else {

//Assign on status to particular index position in toggleStatusArray
}

}

希望这对您有帮助

关于ios - 如何使用分页更改 tableview 自定义单元格中 imageview 的图像。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47453405/

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