如何以编程方式从具有特定位置的superView中删除UIView

时间:2016-12-06 03:08:57

标签: swift

我是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()


    }

2 个答案:

答案 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()


}