我有一个单元格,其中包含一个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