Swift,如何从UIImageView中获取当前显示的图像文件名

17

我想获取当前UIImageView中显示的图像文件名。我尝试按照以下方法获取:

let currentImage = alien.image // !alien is my image view 
println(currentImage?.description)

但它会打印:

Optional("<UIImage: 0x7fa61944c3d0>")

1
我认为你不能,如果你指的是文件名。 - Unheilig
@Unheilig 是的,实际上我是指文件名。经过一些研究,我意识到我不能像你说的那样做。 - semirturgay
2个回答

22

你不能这样做,无论是在Swift还是Objective-C中。

需要做的是存储想要检索的数据。也就是说......将名称存储在某个地方,并使用它来加载图像。而不是相反地。

因此,创建一个名为imageName的属性,然后使用它来加载图像。


我们可以使用哪个变量来使图像具有唯一的名称。目前我正在测试使用静态图像名称(“tempImage”)进行存储,但每次都会覆盖该图像。但是如果我们无法获取图像名称,那么我可以用什么作为图像名称。现在的代码:saveImage(selectedImage, path: fileInDocumentsDirectory("tempImage")) - alex
好的,我使用 // function for images func uniqueFilename() ->String{ let uuid = NSUUID().UUIDString print(uuid) return uuid } - alex

8
作为解决办法,对于我以后需要引用的图片,我使用还原ID来存储图片名称。
我以这种方式使用还原ID,这样我可以将多个按钮连接到同一个@IBAction,并根据存储在还原ID中的图像名称来识别它们并运行关于我想要显示或隐藏的逻辑。
可能有更好的方法,但这种方法在紧急情况下有效。
我将图像名称放入了还原ID中。
这是我指定图片文件的位置...。 enter image description here 然后我只需复制它并将其作为还原ID插入即可。
(注意:这不是它的本意,它的本意是自定义状态参考,但如果与您视图的目的无关,则应该可以正常工作。) enter image description here 当选择按钮时在代码中引用。
//Connected to several onboarding buttons.
@IBAction func onBoardingButton(sender: UIButton) {

    println(sender.restorationIdentifier)



}

打印出 RID。

enter image description here


您还可以标记您的图片,并通过标记保留对这些图片的引用。

enter image description here

而且引用也非常简单。

@IBAction func onBoardingButton(sender: UIButton) {

    println(sender.restorationIdentifier!)
    println(sender.tag)


}

虽然我不确定我们能否确定使用哪个文件来填充imageview(根据我的了解并进行少量查找),但是将硬参考附加到视图(图像、按钮等)允许我在代码中建立连接并找出正在使用的图像(或在这种情况下是按钮)。


你可以获取按钮的名称,但是不能获取它使用的图像。 - Cublax

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接