2016-04-02 24 views
0

Programlama konusunda oldukça yeniyim ve iki düğmem var, biri kamera diğeri seçildiExistingPhoto. Kamera fonksiyonuna kamera butonu ile erişebiliyorum ve başka bir görüntü kontrol cihazında bir UIImage üzerine çektiğim görüntüyü kapatmaya çalışıyorum. Kodum, çekilmeden önce anlık görüntü verememe hatası veriyor. Bunun, yeni görüntü denetleyicisini görüntülemek için düğmeyi bir ibare olarak kullanmaya çalıştığım için olduğunu düşünüyorum. Kullanıcı, fotoğraf arşivinden bir görüntü seçtiğinde veya fotoğraf çekene kadar segue eylemini geciktirmenin bir yolu var mı?Kullanıcı, fotoğraf arşivinden bir görüntü seçtiğinde veya fotoğraf çekene dek segue eylemini geciktirmenin bir yolu var mı? SWIFT

@IBAction fonk kamera (gönderen: AnyObject) {

let picker = UIImagePickerController() 

    picker.delegate = self 
    picker.sourceType = .Camera 

    presentViewController(picker, animated: true, completion: nil) 

    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 
     self.performSegueWithIdentifier("Show", sender: self) 


     func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) 
     { 
      if segue.identifier == "Show" { 
       imageDisplay.image = info[UIImagePickerControllerOriginalImage] as? UIImage 
       dismissViewControllerAnimated(true, completion: nil) 
      } 
     } 
    } 

bu benim düğme için sahip olduğum kodudur. imageDisplay ImageView için oluşturduğum bir görüntü çıkışı ve bu kodu tanımak için ImageDisplayViewController'ı ana ViewController'ım için bir superclass yaptım.

Bu, aldığım hatadır.
Görüntülenmemiş bir görünümün eklenmesi boş bir anlık görüntüyle sonuçlanır. Ekran güncellemelerinden sonra görüntülemenizin en az bir kez snapshotting veya snapshot oluşturulduğundan emin olun.

+0

Kodunuzu buraya yazın (diğerleri), sorununuzu daha iyi anlayabilecek ve size yardımcı olacak. – Amir

+0

Bu, segue'i doğrudan butondan tetiklemek yerine “performSegueWithIndentifier” kullanarak programlı bir şekilde tetiklemeniz gerektiği gibi geliyor. – Paulw11

cevap

1

Düğmeden ViewController'a segue atama. ViewController'dan ViewController'a segue atayın. Şimdi kameradan bir fotoğraf çektiğinizde, selfsperperSegueWithIdentifer ile bu metodda didfinishpicking delegate metoduna geri yönlendirileceksiniz ve kontrol cihazınızı preformasyondan seçin. Segue isminizin gösterildiğini söyleyelim.

Kodu sizin için yeniden yazdım. İkinci VC'nin displayImageVC olduğunu söyleyelim. UIImage türünde showImage olarak bir özellik oluşturun. Daha sonra hazırlık aşamasında yakalanan görüntüyü geçirin.

var capturedImage = UIImage? 
let picker = UIImagePickerController()  picker.delegate = self picker.sourceType = .Camera  presentViewController(picker, animated: true, completion: nil) 

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 
self.capturedImage = info[UIImagePickerControllerOriginalImage] as? UIImage 
self.performSegueWithIdentifier("Show", sender: self) 
} 

func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) { 
if segue.identifier == "Show" { 
    let displayImageVC = segue.destination as displayImageVC 
    displayImageVC.showImage = self.capturedImage 
} 
} 
+0

ViewController'dan ViewController'a segue ekledim ve bu kodu ekledim ve hala görüntüyü oluşturmaya ve boşaltmaya çalıştığımı söylüyor. Görüntü bir şekilde alınana kadar bu kodu geciktirmem gerekiyor mu? – Josh

+0

Bu hatayı nereden alıyorsunuz? Sorunuzu hatayla düzenleyebilir misiniz? Hazırlanırken kameradan yakaladığınız görüntüyü geçmeniz gerekir. DidfinishPickingMediaWithInfo sonunda performsegue eklemeniz gerekir. –

+0

Tamam Soruyu düzenledim – Josh