Swift/iOS8: 在 Segue 之前为下一个 View Controller 设置 imageView

Swift/iOS8: set imageView for next View Controller before Segue

根据一些参数,我试图在第二个 VC 上设置图像,但不知何故它总是 returns null??

我就是这样做的:

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

        if segue.identifier == "showDetail"  {
            println("going forth!")
            println(self.myButton.selected)

            let controller = segue.destinationViewController as? DetailVC

            if myButton.selected == true {
                var newImage = UIImage(named:"Test1")
                var oldImage = controller?.imageView.image
                println(oldImage)

                oldImage = newImage
            } else {
                var newImage = UIImage(named:"Test2")
                var oldImage = controller?.imageView.image
                println(oldImage)

                oldImage = newImage
            }

        } else {
            println("roflcopter")
        }
    }

详情VC主要有"nothing":

import UIKit

class DetailVC: UIViewController {


    @IBOutlet weak var imageView: UIImageView!

    var testString:String!

    @IBAction func goBacktoMain(segue: UIStoryboardSegue) {

        println("going back")

    }

    override func viewDidLoad() {
        super.viewDidLoad()

        println("view Did Load")
        println(testString)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

}

第二个 VC 通过 Storyboard 设置了默认图像,但是当我使用断点 @let 控制器停止时,它会告诉我图像视图实际上是空的,只有在细节 vc 显示过一次?

€dit:设置字符串并在第二个打印出来 VC 工作得很好

在目标 segue 中声明一个 UIImage 变量,将图像对象传递给它。

在目标对象上的 viewDidLoad 上,将图像分配给 imageView.Image 属性

很可能 Outlet 尚未初始化

你在哪里设置图像? 在 prepareForSegue 中,UIImageView IBOutlet 将不会加载。您必须像下面那样在 DetailVC class 中声明一个图像变量,并在 viewDidLoad.

中设置该图像
class  DetailVC
{
    var image:UIImage? = nil
    @IBOutlet weak var imageView: UIImageView!

    override func viewDidLoad()
    {
        imageView.image = image
    }
}

在您的 prepareSegue 函数中,设置

let controller = segue.destinationViewController as? DetailVC
controller?.image = //Your Image according to conditions.