ContainerView embedded in ViewController: Outlets are nil

前端 未结 1 994
-上瘾入骨i
-上瘾入骨i 2021-01-19 17:43

As I am trying to update a container view content from its parent view controller with a function.

After updating the initial ViewDidLoad sets. The app crashes. It s

相关标签:
1条回答
  • 2021-01-19 18:13

    You need to get a reference to the view controller in the container view and then you should have access to all its outlets. Assign a segue identifier to the segue to the container view controller and get a reference when the segue is called.

    For example to update a label in the container view controller from a button in the parent view controller.

    Parent view controller:

    import UIKit
    
    class ViewController: UIViewController {
         var containerVC : ContainerVC!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        }
    
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        // Get the new view controller using segue.destinationViewController.
        // Pass the selected object to the new view controller.
        if (segue.identifier == "segueContainer")
            {
                containerVC = segue.destinationViewController as! ContainerVC
            }
        }
    
    
    @IBAction func butUpdateContainerLabelAction(sender: AnyObject) {
        if containerVC != nil{
               containerVC.lblDemo.text = "some new text"
           }
        }
    
    }
    

    Container View Controller

    class ContainerVC: UIViewController {
    
    @IBOutlet weak var lblDemo: UILabel!
    
    override func viewDidLoad() {
        super.viewDidLoad()
    
        // Do any additional setup after loading the view.
       }
    }
    
    0 讨论(0)
提交回复
热议问题