将图像设置为全局变量(在Swift中)

min*_*eek 1 global-variables ios swift

我正在尝试将图像设置为全局变量。进一步说明一下:我有两个视图控制器。Viewcontroller1是菜单,视图控制器2是具有图像视图的视图控制器。

我要完成的工作是在第一个视图控制器中下载一个图像,将该图像设置为全局变量,然后在视图控制器2中使用该图像。

到目前为止,我有这个:

import UIKit

var globalImage = [String: UIImage]()


class ViewController: UIViewController {

    // this function hides the statusbar
    override func prefersStatusBarHidden() -> Bool {
        return true
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        // variables for accessing web images
        let url = NSURL(string: "http://www.fteunen.com/app/overLay.png")
        let urlRequest = NSURLRequest(URL: url!)
        NSURLConnection.sendAsynchronousRequest(urlRequest, queue: NSOperationQueue.mainQueue(), completionHandler: {
            response, data, error in

            if error != nil {

                println("Something happened i guess, not good!!")
            } else {
                //let image = UIImage(data: data)
                globalImage = UIImage(data: data)
            }

        })



    }

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


}
Run Code Online (Sandbox Code Playgroud)

但不幸的是,这失败了,并在一行globalImage = UIImage(data: data)显示了一个错误,提示*调用中的参数'inBundle'缺少参数

因此,某处是否仅存在语法错误?还是有另一种方法?我的想法甚至行得通吗?

预先感谢您的想法和解决方案!

mil*_*526 5

UIImage
您声明globalImageDictionary

var globalImage = [String: UIImage]()
Run Code Online (Sandbox Code Playgroud)

UIImage为其分配一个

globalImage = UIImage(data: data)
Run Code Online (Sandbox Code Playgroud)

而是尝试声明globalImageUIImage?

var globalImage:UIImage? = nil
Run Code Online (Sandbox Code Playgroud)

可选选项用于将其设置为nil,您可以稍后对其进行初始化。如果有默认图像,则可以在此处进行设置。

当您要声明图像时,可以使用

globalImage = UIImage(data: data)
Run Code Online (Sandbox Code Playgroud)

要在第二个视图控制器中使用图像,您应该检查它是否不是nil

if let image = globalImage{
  //Image has been set
}else{
  //Image has NOT been set
}
Run Code Online (Sandbox Code Playgroud)

字典
如果要使用Dictionary,则需要为UIImage设置密钥

var globalImage = [String: UIImage]()
globalImage[“Second View Controller“] = UIImage(data:data)
Run Code Online (Sandbox Code Playgroud)

您可以使用以下方法访问此图像

if let image = globalImage[“Second View Controller“] {
  //Image has been set
} else {
  //Image has NOT been set
}
Run Code Online (Sandbox Code Playgroud)