将图像设置为全局变量(Swift)
Setting an image as a global variable (in Swift)
我正在尝试将图像设置为全局变量。再解释一下:我有两个视图控制器。 Viewcontroller1 是一个菜单,view controller 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.
}
}
但不幸的是,这失败了,在第 globalImage = UIImage(data: data)
行给出了一个错误,指出 *'inBundle' 在调用 *
中缺少参数
所以,是不是哪里有语法错误?或者还有另一种方法吗?我的想法能行得通吗?
提前感谢您的想法和解决方案!
您声明 globalImage
为 Dictionary
var globalImage = [String: UIImage]()
并为其分配 UIImage
globalImage = UIImage(data: data)
也许这就是问题所在...
如果您希望 globalImage
成为 UIImage,请改用此声明:
var globalImage: UIImage
UIImage
您将 globalImage
声明为 Dictionary
var globalImage = [String: UIImage]()
并为其分配 UIImage
globalImage = UIImage(data: data)
而是尝试将 globalImage
声明为 UIImage?
var globalImage:UIImage? = nil
optional是用来可以设置为nil的,以后可以初始化。如果有默认图片可以在这里设置。
当您想要声明图像时,您可以使用
globalImage = UIImage(data: data)
要在你的第二个视图控制器中使用图像,你应该检查它是否不是 nil
if let image = globalImage{
//Image has been set
}else{
//Image has NOT been set
}
词典
相反,如果您想使用 Dictionary
,则需要为 UIImage
设置一个键
var globalImage = [String: UIImage]()
globalImage[“Second View Controller“] = UIImage(data:data)
您可以使用
访问此图像
if let image = globalImage[“Second View Controller“] {
//Image has been set
} else {
//Image has NOT been set
}
我正在尝试将图像设置为全局变量。再解释一下:我有两个视图控制器。 Viewcontroller1 是一个菜单,view controller 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.
}
}
但不幸的是,这失败了,在第 globalImage = UIImage(data: data)
行给出了一个错误,指出 *'inBundle' 在调用 *
所以,是不是哪里有语法错误?或者还有另一种方法吗?我的想法能行得通吗?
提前感谢您的想法和解决方案!
您声明 globalImage
为 Dictionary
var globalImage = [String: UIImage]()
并为其分配 UIImage
globalImage = UIImage(data: data)
也许这就是问题所在...
如果您希望 globalImage
成为 UIImage,请改用此声明:
var globalImage: UIImage
UIImage
您将 globalImage
声明为 Dictionary
var globalImage = [String: UIImage]()
并为其分配 UIImage
globalImage = UIImage(data: data)
而是尝试将 globalImage
声明为 UIImage?
var globalImage:UIImage? = nil
optional是用来可以设置为nil的,以后可以初始化。如果有默认图片可以在这里设置。
当您想要声明图像时,您可以使用
globalImage = UIImage(data: data)
要在你的第二个视图控制器中使用图像,你应该检查它是否不是 nil
if let image = globalImage{
//Image has been set
}else{
//Image has NOT been set
}
词典
相反,如果您想使用 Dictionary
,则需要为 UIImage
var globalImage = [String: UIImage]()
globalImage[“Second View Controller“] = UIImage(data:data)
您可以使用
访问此图像if let image = globalImage[“Second View Controller“] {
//Image has been set
} else {
//Image has NOT been set
}