我有一個視圖控制器收集信息,包括添加多張照片到記錄的能力。隨着每張照片的添加,新照片將顯示爲特寫照片(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