我有一个包含UIScrollView的单元格,它将有一些UIImageViews,它将保存从Parse下载的图像。
这在我的tableview中加载前5个时效果很好,但在第五个之后,越来越多的UIImageViews堆叠在一起。
我认为问题在于我使用:
Collections.sort
这会在scrollView中添加并继续添加新的UIImageView。
我一直在尝试不同的东西去除UIImageViews,但我似乎无法正确实现它。
我回到了原点,但现在我知道造成这个问题的原因了。
这就是我从Parse下载图像的方式:
cell.scrollView.addSubview(myImageView)
这就是我将我的UIImageViews添加到我的scrollView中的方式:
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()
}
}
}
我已尝试使用以下内容删除单元格内容中的内容,但它表示已找到nil,这会崩溃。
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?????
}
}
在我的FriendsFeedTableViewCell类中,我只有一个标签,以及一个名为
的UIScrollViewfunc tableView(tableView: UITableView, didEndDisplayingCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
var cell = FriendsFeedTableViewCell()
cell.imageScrollView.removeFromSuperview()
}
如何正确删除已创建的UIImageViews?
答案 0 :(得分:0)
我相信您通过访问Parse Twice做了太多工作,您应该下载每个图像一次并将它们插入到单个对象数组中。示例:
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