我有一个视图控制器收集信息,包括添加多张照片到记录的能力。随着每张照片的添加,新照片将显示为特写照片(VC中的故事板UIImageview)。每张照片还应添加到图像数组中,然后将其传递到具有自己的自定义视图控制器的容器视图,并显示出来。添加每张照片后,会显示特写照片,但容器不会重新加载图像。添加一张照片,并重新加载嵌入式照片容器视图控制器
容器不会出现在现有的照片阵列通过传递在赛格瑞方法准备,像这样的工作照片:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
if (segue.identifier == "segueToPhotoCollection")
{
if let imagesArray = images
{
print("photos prepared")
let controller = (segue.destinationViewController as! PhotoCollectionVC)
controller.images = imagesArray
controller.delegate = self
}
}
如果没有照片,容器仍然加载(并打印“容器已装入,但没有照片”)。
class PhotoCollectionVC: UICollectionViewController
{
var images: [UIImage]?
weak var delegate: FeatureImageController?
override func viewDidLoad()
{
super.viewDidLoad()
if images?.count > 0
{ print("container loaded with photos: \(images!.count)") }
else { print ("container loaded, but no photos") }
我需要的是某种方式要么召回prepareForSegue方法或者找到另一种方式来更新并重新装入容器一旦图像添加。拾取器didFinishPickingMediaWithInfo看起来像:
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject])
{
picker.dismissViewControllerAnimated(true, completion:
{
var imageTaken = info[UIImagePickerControllerEditedImage] as? UIImage
...
if let imageTakenNotNil = imageTaken
{
if self.images == nil
{ self.images = [] }
self.images?.append(imageTakenNotNil)
然后一条线,会以某种方式的图像的该阵列重新传递给容器。我需要一个委托方法来做到这一点?!?
我试过了,但得到以下错误信息:“容器视图中有意外的子视图,也许嵌入的segue已经触发过一次或者子程序被编程添加了?当然,嵌入segue已经触发过一次 - 当父视图控制器首次加载时,它会加载嵌入的segue。我需要一些东西 - 非常像这样 - 每次拍摄照片后我都可以重复打电话。 – DrWhat