我是swift的新手,使用swift 3,我构建了一个读取图像组的tableview,我希望如下所示: 当用户在tableview中选择一个图像时,我将它显示在UIImageView中,当取消选择他在tableview中选择的图像时,将从UIImageView中删除(启用了多个选择)。我的下面的代码只适用于一个图像选择,但如果选择了多个图像,然后取消选择最后选择的图像,只从UIImageview中删除。所以我的问题是如何删除属于UItableview中取消选择的记录的UIImageview
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
image_view.image = UIImage(data: Saveddata[indexPath.row].photo as! Data)
//create image view programmatically
currentImageView = UIImageView(frame: CGRect(x: 130 + (i * 10), y: 50 + (i * 5), width: 50, height: 100))
currentImageView.contentMode = .scaleAspectFit
currentImageView.image = image_view.image
view.addSubview(currentImageView as UIView)
}
func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
currentImageView.removeFromSuperview()
}
答案 0 :(得分:0)
如果要在选择/取消选择时更新单元格外观,则应覆盖setSelected(_:animated:)
子类中的方法UITableViewCell
,而不是尝试直接从UITableViewDelegate
方法更新它:
override func setSelected(_ selected: Bool, animated: Bool) {
// Do whatever you want depending on the selected value
}
答案 1 :(得分:0)
您可以根据tag
为每个UIImageView
使用indexPath.row
,以便您可以通过标记引用。
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let image = UIImage(data: Saveddata[indexPath.row].photo as! Data)
//create image view programmatically
let imageView = UIImageView(frame: CGRect(x: 130 + (i * 10), y: 50 + (i * 5), width: 50, height: 100))
imageView.contentMode = .scaleAspectFit
imageView.tag = 100 + indexPath.row
imageView.image = image
view.addSubview(imageView as UIView)
}
func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
// get imageView by its tag
let deselectedImageView = view.viewWithTag(100 + indexPath.row) as! UIImageView
deselectedImageView.removeFromSuperview()
}