所以我在一个viewcontroller.swift文件中有一个图像视图,每次询问一个问题时它都会生成一个随机的背景图像(这是一个测验应用程序)。当用户得到正确答案时,我想要从第一个视图控制器产生的随机背景图像,当问题被要求是下一个视图控制器的相同背景图像时,正确回答答案时显示。每次正确回答问题时,如何确保两个背景图像视图都显示相同的随机图像?以下是我的代码片段,用于处理背景图片。
class ViewController : UIViewController
@IBOutlet weak var backgroundImage: UIImageView!
let backgroundImages = //array containing all the images
//random image generator function
func randomImage() {
index = Int(arc4random_uniform(UInt32(backgroundImages.count)))
backgroundImage.image = backgroundImages[index]
}
现在,如果我希望图像视图始终在不同的类(类SecondViewController:UIViewController)中显示由randomImage函数生成的相同背景图像,例如从原始视图控制器获取数据的最佳方法是什么? (如果您根据问题单击右侧的答案按钮,它将进入一个新的“正确答案”视图控制器,我想要与前一个视图控制器具有相同的背景图像。)
答案 0 :(得分:0)
首先,您必须存储将在 func randomImage()中设置的背景图像索引。所以你必须声明一个类变量
class ViewController : UIViewController
@IBOutlet weak var backgroundImage: UIImageView!
let randomIndex:Int!
let backgroundImages = //array containing all the images
//random image generator function
func randomImage() {
// So now you can pass this value to next viewController.
randomIndex = Int(arc4random_uniform(UInt32(backgroundImages.count)))
backgroundImage.image = backgroundImages[randomIndex]
}
答案 1 :(得分:0)
您可以使用storyboard segue并与prepare语句共享图像,否则您可以创建第二个vc的实例,然后您需要初始化一个图像视图,而不是需要从第一个VC设置该图像视图并推送该vc。
答案 2 :(得分:0)
创建UIImageView的子类并使用它。
答案 3 :(得分:0)
您可以将图像另存为用户文档文件夹中的png,然后根据需要重新加载。请参阅我最近对一个无关问题的回答: