在不创建 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 文件的功能吗?