Search code examples
swiftiboutletxcode8.2

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:

  • Removed and replaced the connection

  • Deleted the derived data folder like one post suggested

  • Created a reference to self.view to force it to load

  • Moved it to viewDidAppear

  • Moved it to viewWillAppear

  • Moved it to viewDidLoad (which is where it is currently being
    called)

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


Solution

  • 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.