所以我已经离开了iOS编码世界,我现在正在浏览Swift。
在Objective-C中我能够动态更改图像,但为此我必须设置图像委托。我设置委托的另一个原因是我可以隐藏UIImageView
在Swift中,我似乎遇到了这个问题。 在操场上,我可以做到这一点:
let responseImageView:UIImageView!
responseImageView.hidden = true
但是在项目中这不起作用。
有人可以帮助我吗?
在我的项目中,我有这段代码:
@IBOutle var responseImageView: UIImageView!
//Inside a function I have this:
let smile = "smile.png"
imageName = UIImage(named: smile)!
responseImageView = UIImageView(image: imageName)
该代码不起作用。
我不能通过这样做隐藏图像:
responseImageView.hidden = true
答案 0 :(得分:1)
如果您在Storyboard或Interface Builder中创建了实际的UIImageView(并且正确地连接了IBOutlet - 如果某些内容没有按预期工作,那么最好仔细检查一下!)您不应该尝试再次实例化它代码只是为了改变图像。相反,通过访问UIImageView的.image
属性来更改图像,如下所示:
let smile = "smile.png"
let image = UIImage(named: smile)
responseImageView.image = image
只是为了澄清:通过“实例化”,我特别指的是项目代码中的这一行:
responseImageView = UIImageView(image: imageName)
在您的函数中执行此操作将破坏您在故事板中设置的连接。如果你在该行或println("\(responseImageView.superview)")
之后放置一个断点,你会看到你的responseImageView实例现在不再附加到superview(解释为什么你可以改变它的图像或隐藏或取消隐藏它你想要的一切 - 你永远不会在应用程序中看到任何变化。)