我有一个单元格,其中包含一个UIScrollView,它将具有一些UIImageViews,这些UIImageViews将保存从Parse下载的图像。

当它在我的表视图中加载前五个时,效果很好,但是在第五个之后,越来越多的UIImageView相互堆叠。

我相信当我使用以下方法时就会出现问题:

cell.scrollView.addSubview(myImageView)


这将添加并继续在scrollView中添加新的UIImageViews。

我一直在尝试其他方法来删除UIImageViews,但是我似乎无法正确实现它。

我回到正题,但是现在我知道是什么引起了问题。

这就是我从Parse下载图像的方式:

photoQuery.findObjectsInBackgroundWithBlock {
    (objects:[AnyObject]?, error: NSError?) -> Void in

    if error == nil {
        for object in objects!{

            var arrayFile = [PFFile]() // hold both image into temp array

            if object.objectForKey("imageOne") != nil {
                self.resultsHasImageOneFile.append(object.objectForKey("imageOne") as! PFFile)
                arrayFile.append(object.objectForKey("imageOne") as! PFFile)
            }

            if object.objectForKey("imageTwo") != nil {
                self.resultsHasImageTwoFile.append(object.objectForKey("imageTwo") as! PFFile)

                arrayFile.append(object.objectForKey("imageTwo") as! PFFile)
            }
            // will add imageThree
            // will add imageFour
            // will add imageFive

            self.masterImageArray.append(arrayFile)//add temp array into Master Image array
            self.resultsTable.reloadData()
        }
    }
}


这就是我将UIImageViews添加到scrollView中的方式:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    // configure cell....

    var imageArray = masterArray[indexPath.row]

    cell.imageScrollView.tag = indexPath.row // do something with this?????

    for var i = 0; i < imageArray.count; i++ {

        var myImageView: UIImageView = UIImageView()

        myImageView.frame.size.width = imageWidth
        myImageView.frame.size.height = imageHeight
        myImageView.frame.origin.x = xPosition

        imageArray[i].getDataInBackgroundWithBlock{
            (imageData: NSData?, error: NSError?) -> Void in

            myImageView.image = UIImage(data: imageData!)
        }

        cell.imageScrollView.addSubview(myImageView)

        xPosition = imageWidth
        scrollViewContentSize += imageWidth

        cell.imageScrollView.contentSize = CGSize(width: scrollViewContentSize, height: imageHeight)

        cell.imageScrollView.tag = indexPath.row // do something with this?????
    }
}


我试图用以下内容删除单元格内容中的内容,但它表示已找到nil,它崩溃了。

func tableView(tableView: UITableView, didEndDisplayingCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {

    var cell = FriendsFeedTableViewCell()
    cell.imageScrollView.removeFromSuperview()
}


在我的FriendsFeedTableViewCell类中,我只有一个标签和一个名为UIScrollView的

@IBOutlet weak var imageScrollView: UIScrollView!


如何正确删除已经创建的UIImageViews?

最佳答案

我相信您通过访问两次分析会做很多工作,应该下载每个单个图像一次并将它们插入到单个对象阵列中。范例:

    var photoQuery = PFQuery(className: "")
photoQuery.findObjectsInBackgroundWithBlock { (objects:[AnyObject]?, error:NSError?) -> Void in

    if error == nil
    {
        if let objects = objects as? [PFObject]
        {
            for singleObject in objects
            {
                var ImageDataToDownload = singleObject["images"] as! PFFile
                ImageDataToDownload.getDataInBackgroundWithBlock({ (dataToget:NSData?, error:NSError?) -> Void in
                    if error == nil
                    {
                        if let  image = UIImage(data: dataToget!) {
                                // pass this image to  your array
                                // reload tableview
                        }
                    }
                })
             }}}}


然后在cellForRowAtIndexPath()中

    cell.imageView.image = arrayFromQuery[indexPath.row]
  then you take care of your scrollview inside that cell

10-08 05:58