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

lon*_*bow 1 uiimageview ios swift

取决于几个参数我试图在第二个VC上设置一个Image,但不知怎的,它总是返回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")
        }
    }
Run Code Online (Sandbox Code Playgroud)

细节VC基本上没有"没有":

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()
    }

}
Run Code Online (Sandbox Code Playgroud)

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

€dit:设置字符串并在第二个VC上打印它完全正常

rak*_*hbs 7

你在哪里设置图像?里面prepareForSegueUIImageView IBOutlet会不会装.您必须在DetailVC类中声明一个图像变量,如下所示并设置该图像viewDidLoad.

class  DetailVC
{
    var image:UIImage? = nil
    @IBOutlet weak var imageView: UIImageView!

    override func viewDidLoad()
    {
        imageView.image = image
    }
}
Run Code Online (Sandbox Code Playgroud)

在你的prepareSegue功能中,设置

let controller = segue.destinationViewController as? DetailVC
controller?.image = //Your Image according to conditions.
Run Code Online (Sandbox Code Playgroud)