如何从 XIB 文件访问 ViewController 中的 IBoutlet
Posted
技术标签:
【中文标题】如何从 XIB 文件访问 ViewController 中的 IBoutlet【英文标题】:How to access the IBoutlet in ViewController from the XIB file 【发布时间】:2018-05-30 07:08:37 【问题描述】:我在 UiView.xib 文件中有我的 UIButton Outlet,我想创建一个操作/函数来更改来自另一个 UIView.xib 文件的 UILablel Outlet 的文本。
我已经在我的 ViewController 文件中添加了两个 UIView,但我不知道如何创建函数来访问不同 XIB 文件中的元素并在函数中调用它们。
这是我的 ViewController 文件的代码
override func viewDidLoad()
super.viewDidLoad()
// UIView 1 (XIB File 1)
if let addUIView1 = Bundle.main.loadNibNamed("totalOz", owner: self, options: nil)?.first as? totalOZVC
self.view.addSubview(addUIView1)
// Button 120ml function
addUIView1.button120ml.addTarget(self, action: #selector(ViewController.buttonSelectGlassSize(sender:)), for: .touchUpInside)
// UIView2 (XIB File 2)
if let addUIView2 = Bundle.main.loadNibNamed("GlassSelector", owner: self, options: nil)?.first as? GlassSelectorVC
self.view.addSubview(addUIView2)
addUIView2.labelGlassSelect.textColor = UIColor.white
addUIView2.labelGlassSelect.text = "Select the size of Glass"
// Creating a function to call the Outlets from the XIB files
@objc func buttonSelectGlassSize(sender: UIButton)
// Change the text of labelGlassSelect when user press the button 120mL
对不起,我对 Swift 还是很陌生,请大家帮帮我。
非常感谢!
【问题讨论】:
【参考方案1】:要将来自不同 xib 的函数调用回您的控制器,请使用自定义委托方法。下面是教程
Implementing delegates in Swift, step by step.
要从您的控制器更新其他类数据,请在其他类中创建内部函数并从您的控制器调用它们。
【讨论】:
【参考方案2】:创建了addUIView1
和addUIView2
的全局实例。在buttonSelectGlassSize
方法中,访问addUIView2 并更新label 的文本。目前您没有全局实例,因此您无法更新标签的文本。
【讨论】:
以上是关于如何从 XIB 文件访问 ViewController 中的 IBoutlet的主要内容,如果未能解决你的问题,请参考以下文章