在不创建 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的主要内容,如果未能解决你的问题,请参考以下文章

在不创建新类的情况下访问自定义 UITableViewCell 中的 UITextField?

我可以创建一个接口对象并在不覆盖它的情况下访问实现该接口的 java 文件的功能吗?

是否可以在不调用 open() 的情况下创建 CallOut 内容

在不复制此变量或互斥变量的情况下访问类成员

是否可以在不添加服务参考的情况下访问 WCF 服务?

在不事先了解特定成员函数的情况下从另一个类访问成员函数