【问题标题】:Pass image from one view controller to another controller gives nil将图像从一个视图控制器传递到另一个控制器给出 nil
【发布时间】:2018-03-06 17:44:12
【问题描述】:

我正在尝试将图像发送到 预览控制器,如下所示。我的问题是在 预览控制器 newImagenil

下面是代码:

FirstViewController

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    print("In here")
    if segue.identifier == "showImage" {

        let secondViewController = self.storyboard!.instantiateViewController(withIdentifier: "showImage") as! showImageController

        secondViewController.newImage =  UIImage(named: imageArray[0])

    }
}

预览控制器

@IBOutlet weak var imageHolder: UIImageView!
var newImage: UIImage!

override func viewDidLoad() {
    super.viewDidLoad()
    imageHolder.image = newImage
    // Do any additional setup after loading the view.
}

【问题讨论】:

    标签: swift uiviewcontroller segue


    【解决方案1】:

    你应该使用segue.destination 而不是创建一个新的,像这样

     override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    
       print("In here")
    
       if segue.identifier == "showImage" {
    
            let next = segue.destination as! showImageController
    
            next.newImage =  UIImage(named: imageArray[0])
    
        }
    
     }
    

    【讨论】:

      【解决方案2】:

      instantiateViewController 调用 viewDidLoad() 所以当它被调用时你不会设置你的图像。将代码移至 viewWillAppear() 即可运行

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多