Ios 从阵列swift访问图像

Ios 从阵列swift访问图像,ios,swift,Ios,Swift,我已经在swift中创建了一个图像库,我想在它下面创建一个显示图像标题的标签。在我的代码中,我创建了一个数组,该数组存储了我想要的所有图像。我想创建一个if语句,当显示某个图像时,我想更改标签的文本。我不确定如何访问滚动视图中显示的特定图像 以下是我目前的代码: import UIKit class ViewController: UIViewController { @IBOutlet weak var mainscrollview: UIScrollView! var imageArray

我已经在swift中创建了一个图像库,我想在它下面创建一个显示图像标题的标签。在我的代码中,我创建了一个数组,该数组存储了我想要的所有图像。我想创建一个
if
语句,当显示某个图像时,我想更改标签的文本。我不确定如何访问滚动视图中显示的特定图像

以下是我目前的代码:

import UIKit

class ViewController: UIViewController {
@IBOutlet weak var mainscrollview: UIScrollView!
var imageArray = [UIImage]()

    @IBOutlet var label: UILabel!
    override func viewDidLoad() {
        super.viewDidLoad()
        mainscrollview.frame = view.frame
        imageArray = [#imageLiteral(resourceName: "goku"), #imageLiteral(resourceName: "boruto"), #imageLiteral(resourceName: "tail"), #imageLiteral(resourceName: "sage"),#imageLiteral(resourceName: "tobi")]

        for i in 0..<imageArray.count{
        let imageView = UIImageView()
            imageView.image = imageArray[i]
            imageView.contentMode = .scaleAspectFit
            let xPosition = self.view.frame.width * CGFloat(i)
            imageView.frame = CGRect(x: xPosition, y: 0, width: self.mainscrollview.frame.width,height: self.mainscrollview.frame.height)
            mainscrollview.contentSize.width = mainscrollview.frame.width * CGFloat(i + 1)
            mainscrollview.addSubview(imageView)



        }


    }
给了我一大堆错误

伪码
imageView的
image
属性是
UIImage
对象,而不是
UIImageView

尝试:


imageView的
image
属性是
UIImage
对象,而不是
UIImageView

尝试:


uiimage有一个按名称获取图像的属性

您的代码必须如下所示

 if imageView.image ==  UIImage(named:"goku")  {


 }
还有一点,您已经在数组中写入并添加了图像,如下所示

imageArray = [#imageLiteral(resourceName: "goku"), #imageLiteral(resourceName: "boruto"), #imageLiteral(resourceName: "tail"), #imageLiteral(resourceName: "sage"),#imageLiteral(resourceName: "tobi")]

不要这样做,只需在数组中添加图像名称(字符串)并在for循环中按图像名称获取图像。

uiimage有一个属性可按名称获取图像

您的代码必须如下所示

 if imageView.image ==  UIImage(named:"goku")  {


 }
还有一点,您已经在数组中写入并添加了图像,如下所示

imageArray = [#imageLiteral(resourceName: "goku"), #imageLiteral(resourceName: "boruto"), #imageLiteral(resourceName: "tail"), #imageLiteral(resourceName: "sage"),#imageLiteral(resourceName: "tobi")]

不要这样做,只在数组中添加图像名称(字符串),并在for循环中按图像名称获取图像。

使用
==
比较图像可能会按预期工作,也可能不会按预期工作。我很确定,除非比较的两边都包含相同的对象,而不是相同对象的两个副本,否则它将返回false

在任何情况下,将图像的另一个副本加载到内存中只是为了查看它是否匹配都是低效的


我建议保存一个图像名称数组,创建具有name属性的UIImageView子类,并将其安装到滚动视图中安装的每个图像视图中。然后比较图像名称,而不是图像。

使用
==
比较图像可能会或可能不会按预期工作。我很确定,除非比较的两边都包含相同的对象,而不是相同对象的两个副本,否则它将返回false

在任何情况下,将图像的另一个副本加载到内存中只是为了查看它是否匹配都是低效的



我建议保存一个图像名称数组,创建具有name属性的UIImageView子类,并将其安装到滚动视图中安装的每个图像视图中。然后比较图像名称,而不是图像。

请在问题中包含错误。但是,其中一个问题是您试图使用赋值(=)而不是比较(=)。不相关,但不应显式调用
init
,只需使用简写符号,
UIImageView(image:)
。另外,
UIImageView.init(image:“goku”)
无法工作,因为
“goku”
字符串,而不是
UIImage
。如何获取屏幕上当前显示的图像您应该已经将其存储为
UIImage
类型的变量,只需检查
imageView.image
是否等于该值。类似于
让gokuImage=UIImage(名为:“goku”)
,然后
如果imageView.image==gokuImage
假设图像存储在应用程序包中。请在问题中包含错误。但是,其中一个问题是您试图使用赋值(=)而不是比较(=)。不相关,但不应显式调用
init
,只需使用简写符号,
UIImageView(image:)
。另外,
UIImageView.init(image:“goku”)
无法工作,因为
“goku”
字符串,而不是
UIImage
。如何获取屏幕上当前显示的图像您应该已经将其存储为
UIImage
类型的变量,只需检查
imageView.image
是否等于该值。类似于
让gokuImage=UIImage(名为:“goku”)
,然后
如果imageView.image==gokuImage
假设图像存储在应用程序包中。这不起作用。您不能将UIImageView设置为
image
属性。此外,您不应该显式调用
init
方法,请使用简写符号。您的代码甚至不会编译,因为您使用的是赋值而不是比较…这不起作用。您不能将UIImageView设置为
image
属性。此外,您不应该显式调用
init
方法,请使用简写符号。您的代码甚至不会编译,因为您使用的是赋值而不是比较…您还必须使用
=
进行比较,而不是
=
。谢谢,这已经奏效了,但是我遇到了一个问题,当图像更改时标题没有更改HI图像更改时标题没有更改,即使我设置了if语句,您也必须使用
==
进行比较,而不是
=
。谢谢,这已经奏效了,但是我遇到了一个问题,当图像更改时标题没有更改HI图像更改即使我设置了if语句标题也没有更改您能给我一个保存图像名称数组、创建具有name属性的UIImageView子类的示例吗,将它安装到滚动视图中的每个图像视图中?当我比较图像名称时,磁贴不会改变,它只作为一个。这是非常简单的事情。你自己尝试一下,如果你无法让它工作,请发布你的代码,我们可以帮助你修复它。你能给我一个保存图像名称数组、创建具有name属性的UIImageView子类的示例吗,将它安装到滚动视图中的每个图像视图中?当我比较图像名称时,磁贴不会改变,它只作为一个。这是非常简单的事情。尝试它自己,如果你不能让它工作后,你的代码,我们可以帮助你修复它。
imageArray = [#imageLiteral(resourceName: "goku"), #imageLiteral(resourceName: "boruto"), #imageLiteral(resourceName: "tail"), #imageLiteral(resourceName: "sage"),#imageLiteral(resourceName: "tobi")]