如何从XIB文件访问ViewController中的IBoutlet

时间:2018-05-30 07:08:37

标签: ios swift

我在UiView.xib文件中有我的UIButton Outlet,我想创建一个动作/函数,它将改变来自另一个UIView.xib文件的UILablel Outlet的文本。

我已经在我的ViewController文件中添加了两个UIViews,但我不知道如何创建函数来访问不同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还是个新手,请你帮帮我吧。

非常感谢你!

2 个答案:

答案 0 :(得分:0)

制作了addUIView1addUIView2的全局实例。在buttonSelectGlassSize方法中,访问addUIView2并更新label的文本。目前您还没有全局实例,因此您无法更新标签的文本。

答案 1 :(得分:0)

要将来自不同xib的函数调用回控制器,请使用自定义委托方法。以下是教程

Implementing delegates in Swift, step by step.

要从控制器更新其他类数据,请在其他类中创建内部函数,然后从控制器中调用它们。