2015-12-08 18 views
0

我已經添加了相機&照片庫到我的應用程序,但我想要做的是當有人選擇相機,拍攝照片並選擇它時,我希望它將用戶導向到新的viewcontroller並顯示那裏的圖像,而不是在按鈕所在的當前視圖上?如何從UIImagePickerController將圖像導入到新的VC? Swift

到目前爲止,從谷歌上爬起來,我設法得到新的視圖加載時,相機或圖書館被解僱,但現在我似乎無法弄清楚如何導入照片太新視圖呢?!

如果任何人都可以提供幫助,那就太好了。

繼承人下面我當前的代碼:

override func viewDidLoad() { 
     super.viewDidLoad() 



     // Do any additional setup after loading the view. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 









    @IBAction func Camera(sender: AnyObject) { 

     if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera) { 
     let imagePicker = UIImagePickerController() 
     imagePicker.delegate = self 
     imagePicker.sourceType = UIImagePickerControllerSourceType.Camera; 
     imagePicker.allowsEditing = false 
     self.presentViewController(imagePicker, animated: true, completion: nil) 
     } 



    } 



    @IBAction func Images(sender: AnyObject) { 

     let image = UIImagePickerController() 
     image.delegate = self 
     image.sourceType = UIImagePickerControllerSourceType.PhotoLibrary 
     image.allowsEditing = false 


     self.presentViewController(image, animated: true, completion: nil) 



    } 



    func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image:UIImage, editingInfo: [String : AnyObject]?) { 

     self.dismissViewControllerAnimated(true, completion: nil) 
     let svc = self.storyboard!.instantiateViewControllerWithIdentifier("imageViewer") as! ImageViewController 
     self.presentViewController(svc, animated: true, completion: nil) 


    } 



















} 

回答

0

,你想將圖像設置爲圖像視圖,當你應該試圖將圖像設置爲圖像視圖的圖像時,它應該是:

func viewDidLoad(){ super.viewDidLoad()

// Because the self.image is an optional var, you need to unwrap it 
if let image = self.image { 
    self.imageView.image = self.image 
} 

}

+0

太棒了,完美工作 – Charles

0

添加一個可選的屬性,以基於上述回答您的視圖控制器

class ImageViewController: UIViewController { 

    var image : UIImage? = nil 

} 


func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image:UIImage, editingInfo: [String : AnyObject]?) { 

     self.dismissViewControllerAnimated(true, completion: nil) 
     let svc = self.storyboard!.instantiateViewControllerWithIdentifier("imageViewer") as! ImageViewController 
     svc.image = image // here 
     self.presentViewController(svc, animated: true, completion: nil) 

    } 
+0

嗨,感謝您的回答。那個MyViewController類...對應於我的ImageViewController嗎? – Charles

+0

當然,我更新了答案 –

+0

並且我是否將該類位放在與上面顯示的代碼相同的文件中,還是放在第二個代碼中? – Charles

0

在你ImageViewController,或其它接收的ViewController,添加:

var selectedImage: UIImage? = nil 

didFinishPickingImage,這種替換代碼:

func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image:UIImage, editingInfo: [String : AnyObject]?) { 
    self.dismissViewControllerAnimated(true, completion: nil) 
    let svc = self.storyboard!.instantiateViewControllerWithIdentifier("imageViewer") as! ImageViewController 
    svc.selectedImage = image 
    self.presentViewController(svc, animated: true, completion: nil) 
} 

在接收的ViewController svc指的是,添加一個方法來顯示th e圖像:

class ImageViewController: UIViewController { 

    var selectedImage: UIImage? = nil 

    var yourImageView = UIImageView() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     ... 
     yourImageView.frame = view.frame 
     yourImageView.image = selectedImage 
    } 
    ... 
} 
0

我想提出一些修改建議。

請看看這個答案:Presenting a modal view controller immediately after dismissing another

func presentImageViewerWithImage(image: UIImage) { 

    let svc = self.storyboard!.instantiateViewControllerWithIdentifier("imageViewer") as! ImageViewController 
    svc.image = image //Need to make an UIImage instance variable in new viewController 
    self.presentViewController(svc, animated: true, completion: nil) 
} 

func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image:UIImage, editingInfo: [String : AnyObject]?) { 

    self.dismissViewControllerAnimated(false, completion: { 
     self.presentImageViewerWithImage(image) 
    }) 
} 

然後在新的瀏覽器做一個UIImageViewIBOutlet,並顯示所選擇的圖像格式選擇器是「ImageView的」

@IBOutlet weak var aImageView: UIImageView! 

var image : UIImage? 

override func viewDidLoad() { 
    super.viewDidLoad() 

    if let image = image { 
     self.aImageView.image = image 
    } 
} 
+0

演示項目uploded https://github.com/rishi420/TestImagePicker –

相關問題