将图像传递给另一个视图控制器(Swift)

12 uibutton uiviewcontroller uiimageview ios swift

我正在尝试将用户上传的图像从一个UIImageView移动到另一个View Controller上的另一个UIImageView.我可以让用户上传图像并将其保存在第一个UIImageView中,但在按下"发布"按钮后,下一个视图控制器上的UIImageView仍为空白.

注意:browsingImage是第二个视图控制器上的UIImageView的名称(目标UIImageView)

任何帮助将不胜感激!

@IBAction func cameraButton(sender: AnyObject) {

    addNewPicture()

}


func addNewPicture() {

    let picker = UIImagePickerController()
    picker.allowsEditing = true
    picker.delegate = self

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

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

    postingImage.image = image
    self.dismissViewControllerAnimated(true, completion: nil)

}

@IBAction func postButton(sender: AnyObject) {

    performSegueWithIdentifier("toBrowsePage", sender: nil)


}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    if segue.identifier == "toBrowsePage" {


        var itemToAdd = segue.destinationViewController as! ListPage

        itemToAdd.postingImage.image = browsingImage.image

    }

}
Run Code Online (Sandbox Code Playgroud)

vac*_*ama 24

prepare(for:)您无法访问@IBOutlet目标视图控制器的s,因为它们尚未设置.您应该将图像分配给目标视图控制器的属性,然后将其移动到以下位置viewDidLoad():

在源视图控制器中:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "toBrowsePage" {
        let dvc = segue.destination as! ListPage
        dvc.newImage = postingImage.image
    }
}
Run Code Online (Sandbox Code Playgroud)

在目标视图控制器中:

class ListPage: UIViewController {
    @IBOutlet weak var browsingImage: UIImageView!
    var newImage: UIImage!

    override func viewDidLoad() {
        super.viewDidLoad()
        browsingImage.image = newImage
    }
}
Run Code Online (Sandbox Code Playgroud)


Leo*_*Leo 1

根据您的描述,browsingImage位于目标 viewController 中,因此在这一行中

itemToAdd.postingImage.image = browsingImage.image
Run Code Online (Sandbox Code Playgroud)

您将目标图像视图传递给源图像视图