【发布时间】:2017-11-23 10:36:05
【问题描述】:
我在使用了分页的应用程序中使用了表格视图。请求被发送到服务器,它以 10 个大小的批次返回项目。到目前为止一切正常。现在我的表格视图单元格(自定义)中有一个图像视图。我想要当用户点击它时该图像视图的图像切换时。我通过以下方式尝试了这个东西:
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()
}
现在我面临的问题是,如果用户点击任何单元格上的第一个图像视图,它会更改其图像,但随之而来的是每第四个单元格都会更改其图像。 例如,如果我点击了第一个单元格的图像视图,它的图像会改变,但单元格 5、9、13 的图像......也会改变。
我的代码有什么问题?我错过了什么吗?由于分页,indexPath.row 存在一些问题,但我不知道它到底是什么以及如何解决它。我发现了一个类似的问题,但它接受的解决方案对我不起作用,因此我们将不胜感激。
【问题讨论】:
标签: ios swift uitableview pagination