Danickar
Danickar

Reputation: 85

IBOutlet is nil

I have created a standard outlet for a view that will hold different information based on the button selected on the previous screen.

@IBOutlet weak var labelView: UIView!

It shows it is connected in both the story board view and on the code itself, however, every time I get to any reference to the labelView such as:

if detail.description == "About"
{
   labelView.backgroundColor = UIColor.red
}

Then the app crashes out with:

fatal error: unexpectedly found nil while unwrapping an Optional value

I have tried everything I can think of or read on the internet:

I am sure at this point that the answer is rather simple and I am just completely missing it.

Upvotes: 3

Views: 2437

Answers (2)

shallowThought
shallowThought

Reputation: 19602

Views are lazy initialized. In case you are calling the affected line of code before viewDidLoad() in the views life cycle, try to access viewin advance:

if detail.description == "About" {
    _ = self.view
    labelView.backgroundColor = UIColor.red
}

Upvotes: 0

Ashley Mills
Ashley Mills

Reputation: 53213

To see where the outlet is being set to nil, try this:

@IBOutlet weak var labelView: UIView? {
    didSet {
        print("labelView: \(labelView)")
    }
}

You should see it set to an initial value when the view is loaded. If it then gets set to nil, put a breakpoint on the print and your should be able to see from the backtrace where it's happening.

Upvotes: 1

Related Questions