gpt4 book ai didi

ios - 如何在 SWIFT 3(通过 Storyboard 创建)中获取特定控件的标识符名称以从 DB 设置值

转载 作者:搜寻专家 更新时间:2023-11-01 07:18:18 24 4
gpt4 key购买 nike

我已经为某个图表创建了 100 多个控件(标签、文本框、 ImageView ),使用 Storyboard(是的,我就是那个耐心的人 :( 或者有更简单的方法来做这个,哈哈),现在我的问题是如何使用其标识符名称遍历控件(我通过 ctrl + 拖动到 swift 文件手动完成)。是否有任何方法获取其“标识符名称”(如在 Android 中)以便我可以为该特定控件设置值w/我的数据库中的值。例如:

for i in 0 ..< chartDetails.count{

for view in self.innerView.subviews as [UIView] {
if let txtFld = view as? UITextField{

if(txtFld.identifier == "TXT_L_" + String((i + 1)))
{
txtFld.text = chartDetails[i].ConValue
}
}
}
}

其他解决方案说使用标签,但我认为它在这种情况下不起作用。

我试过了,但出现错误,“展开可选值”

for i in 0 ..< chartDetails.count{

for view in self.innerView.subviews as [UIView] {
if let txtFld = view as? UITextField{

if let value = txt as? UIAccessibilityIdentification{
print("Test: " + value.accessibilityIdentifier!)
}
}
}
}

编辑:

感谢 alexburtnik,为了在您创建的控件中设置值,您需要以编程方式设置每个控件的可访问性。

enter image description here

最佳答案

如果这些控件和标签彼此相似,您应该为每个组使用 IBOutletCollection 而不是单独的 IBOutlet。为了做到这一点,只需在您ctrl 并拖动组中的第一个元素到您的类时选择IBOutletCollection。你应该看到这样的东西:

@IBOutlet var textFields: [UITextField]!

您只需将组中的所有后续元素拖到同一个变量中,它们就会在运行时添加到数组中。

现在您可以像处理任何其他数组一样遍历这些元素:

for textField in textFields {
if let identifier = textField.accessibilityIdentifier {
print("Test: " + identifier)
}
}

请注意,我仅在 accessibilityIdentifier 存在时打印,因此它不会像您的代码那样崩溃。事实上,几乎所有地方都应该避免强制展开 (!)。

关于ios - 如何在 SWIFT 3(通过 Storyboard 创建)中获取特定控件的标识符名称以从 DB 设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40619777/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com