来自 UIImageView 来自 String 的名称
name from UIImageView from String
如何用字符串替换 UIImageview 的名称
name\(number).isHidden = false
不工作
name1.isHidden = false
谢谢于尔根
你不能那样做。 Swift 是编译语言,不是脚本语言。
“name1”存在于您的源代码中仅。
如果您确实需要处理对象(无论是图像视图还是其他 UI 元素),以便您可以“按名称”引用它们,最好的办法是创建字典。
假设您已经在 Storyboard 中添加了图像视图并通过 @IBOutlet
连接它们,例如:
@IBOutlet var name1: UIImageView!
@IBOutlet var name2: UIImageView!
@IBOutlet var name3: UIImageView!
@IBOutlet var name4: UIImageView!
您可以像这样在 viewDidLoad()
中创建字典:
class TestViewController: UIViewController {
@IBOutlet var name1: UIImageView!
@IBOutlet var name2: UIImageView!
@IBOutlet var name3: UIImageView!
@IBOutlet var name4: UIImageView!
var imageViews: [String : UIImageView] = [:]
override func viewDidLoad() {
super.viewDidLoad()
imageViews["name1"] = name1
imageViews["name2"] = name2
imageViews["name3"] = name3
imageViews["name4"] = name4
}
}
然后您可以“按名称”获得对图像视图的引用:
let i = 3
// make sure we get a valid reference
if let imgView = imageViews["name\(i)"] {
imgView.isHidden = false
}
这不是一个好方法,原因有很多。
一个更好的方法是将它们连接到一个 @IBOutlet
集合:
@IBOutlet var imageViews: [UIImageView]!
将您所有的图像视图连接到那个 @IBOutlet
...然后在 run-time 您可以像以下一样轻松地获得参考:
imageViews[number].isHidden = false
如何用字符串替换 UIImageview 的名称
name\(number).isHidden = false
不工作
name1.isHidden = false
谢谢于尔根
你不能那样做。 Swift 是编译语言,不是脚本语言。
“name1”存在于您的源代码中仅。
如果您确实需要处理对象(无论是图像视图还是其他 UI 元素),以便您可以“按名称”引用它们,最好的办法是创建字典。
假设您已经在 Storyboard 中添加了图像视图并通过 @IBOutlet
连接它们,例如:
@IBOutlet var name1: UIImageView!
@IBOutlet var name2: UIImageView!
@IBOutlet var name3: UIImageView!
@IBOutlet var name4: UIImageView!
您可以像这样在 viewDidLoad()
中创建字典:
class TestViewController: UIViewController {
@IBOutlet var name1: UIImageView!
@IBOutlet var name2: UIImageView!
@IBOutlet var name3: UIImageView!
@IBOutlet var name4: UIImageView!
var imageViews: [String : UIImageView] = [:]
override func viewDidLoad() {
super.viewDidLoad()
imageViews["name1"] = name1
imageViews["name2"] = name2
imageViews["name3"] = name3
imageViews["name4"] = name4
}
}
然后您可以“按名称”获得对图像视图的引用:
let i = 3
// make sure we get a valid reference
if let imgView = imageViews["name\(i)"] {
imgView.isHidden = false
}
这不是一个好方法,原因有很多。
一个更好的方法是将它们连接到一个 @IBOutlet
集合:
@IBOutlet var imageViews: [UIImageView]!
将您所有的图像视图连接到那个 @IBOutlet
...然后在 run-time 您可以像以下一样轻松地获得参考:
imageViews[number].isHidden = false