【问题标题】:How do I pass an image view and its properties from one view controller to another?如何将图像视图及其属性从一个视图控制器传递到另一个视图控制器?
【发布时间】:2017-07-05 01:13:03
【问题描述】:

所以我在一个 viewcontroller.swift 文件中有一个图像视图,每次提出问题时都会生成一个随机背景图像(这是一个测验应用程序)。当用户得到正确的答案时,我希望在询问问题时从第一个视图控制器生成的随机背景图像与答案正确回答时显示的下一个视图控制器的背景图像相同。每次正确回答问题时,如何确保两个背景图像视图显示相同的随机图像?这是我处理背景图像的代码的 sn-p。

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 函数生成的相同背景图像,例如从原始视图控制器获取数据的最佳方法是什么? (如果您根据问题单击正确答案按钮,它将进入一个新的“正确答案”视图控制器,我希望它具有与前一个视图控制器相同的背景图像)。

【问题讨论】:

  • 您需要稍微具体一点,因为有几种方法可以做到这一点。您尚未回答的最重要的细节是两个视图控制器是如何连接的?但是等等 - 还有更多。你试过什么?您展示了某种代码真是太好了 - 但您确实没有展示任何重要的代码!
  • 视图控制器是这样连接的:第一个视图控制器是显示问题的基本视图控制器,并显示其答案选项,如果您单击具有正确答案选项的按钮,那么我'正在尝试让它前进到另一个视图控制器(当您选择正确答案时显示的视图控制器)以显示与基本视图控制器相同的背景图像

标签: ios swift image uiimageview segue


【解决方案1】:

首先,您必须存储将在 func randomImage() 中设置的背景图像 index。所以你必须声明一个类变量

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]

}

【讨论】:

  • 那么我将如何在下一个视图控制器 swift 文件中设置代码?通过创建一个连接到这个的新变量?我需要实现一个segue吗?
  • 你使用的是故事板segue还是?
【解决方案2】:

您可以使用故事板 segue 并使用 prepare 语句共享图像,否则您可以创建第二个 vc 的实例,然后您需要初始化一个图像视图,而不是从第一个 VC 设置该图像视图并推送该 vc。

【讨论】:

    【解决方案3】:

    制作 UIImageView 的子类并使用它。

    【讨论】:

      【解决方案4】:

      您可以将图像保存为用户文档文件夹中的 png 并根据需要重新加载。查看我最近对一个无关问题的回答:

      Saving an image to User Documents folder

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多