在view B
我有一个可以从图库中获取图像的图像视图。图像作为NSData
现在,如果我点击提交按钮&返回view A
,我有一个collectionview
,我想要显示图像。如果我再次转到view B
并添加其他图片,请点击提交&返回view A
我应该看到2张不同的图片。
但是当我回来时,我看到的是第一张图片两次,而不是两张不同的图片。但当我再次运行应用程序时,我会看到所有不同的图像
按要求...
在view A
的viewWillAppear中,这就是我所做的......
//Fetching from Database
let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "Customers2")
do {
customerDetails2 = try managedContext.fetch(fetchRequest as! NSFetchRequest<NSFetchRequestResult>) as! [Customers2]
for result in customerDetails2 {
if let imageData = result.value(forKey: "image") as? NSData {
}
}
collectionview2.reloadData()
} catch let error as NSError {
print("Could not fetch. \(error), \(error.userInfo)")
}
在视图中的numberOfItemsInSection
A ...。
count1 = customerDetails2.count
cellForRowAtIndexPath
的{{1}} ...
view A
答案 0 :(得分:1)
问题是使用以下行
imageArray.append(image)
如您所述,添加第二张图片后会出现问题 因此,您可能会再次重新加载集合视图以显示图像。 上面的代码将再次执行,它将在索引1处附加行零的图像,在索引2处附加行1,因此当您尝试显示row1的图像时,它将与行0相同。 如果要缓存图像,请使用字典 如下所示
//Declare a poperty
var imageDict = Dictionary<String,UIImage>()
//At cellForRow
imageDict["\(indexpath.row)"] = image
还检查图像是否存在于缓存中
if let image = imageDict["\(indexpath.row)"] as? UIImage {
//Load Image
} else {
//Initialise from data
}