在不创建 IBOutlets 的情况下访问 UIelements

Posted

技术标签:

【中文标题】在不创建 IBOutlets 的情况下访问 UIelements【英文标题】:Access UIelements without making IBOutlets 【发布时间】:2017-12-26 06:12:05 【问题描述】:

我想在不建立 IBOutlet 连接的情况下访问 viewController 的 UIElements(例如 Labels 和 TextFields 等)。

例如我在 viewController 中有一个 UITextField,我想像 viewControllerName.textFieldName.text = "something I will set here" 一样访问它 或者和android一样的概念findViewById("id of element") 我使用了“标签”,但它不符合我的要求。

【问题讨论】:

【参考方案1】:

您将以编程方式创建 UITextField,并以编程方式访问 UITextFieldName.text = "Some"。 以编程方式创建标签Check This link

【讨论】:

【参考方案2】:

是的,您可以在不建立 IBOutlet 连接的情况下访问 viewController 的 UIElements(例如 Labels 和 TextFeilds 等)。首先给 UIElement 一个 Tag。 然后试试这个。希望这会有所帮助:

如果你想在同一个viewController中访问它

let label = self.view.viewWithTag(4) as? UILabel
label?.text = "Hello there"

如果你想从其他 viewController 访问它firstViewControler

     import UIKit
        internal weak var FirstViewController: ViewController?

//in viewDidLoad
        override func viewDidLoad() 
            super.viewDidLoad()
            FirstViewController = self
        

它将使它可以在所有其他 viewControllers 中访问 然后在 secondViewController

let newlabel = homeViewController?.view.viewWithTag(4) as? UILabel
    newlabel?.text = "new change"

【讨论】:

感谢您的回答。但我不想使用标签 你写过我使用过标签,所以我想这会有所帮助 没有 IBOutlet 连接或标签的 UIElements 没有身份,没有任何身份您无法访问它们 它们是否可以通过故事板源代码中自动生成的 id 访问 自己的故事板为每个 UIElements 创建 id,但它仅适用于他们自己的标签下的故事板(例如标签

以上是关于在不创建 IBOutlets 的情况下访问 UIelements的主要内容,如果未能解决你的问题,请参考以下文章