I am trying to programatically set view controllers of my custom TabBarController:
import UIKit
class TabBarViewController: UITabBarController, UITabBarCont
The problem is that the view controllers you are trying to use are declared optional:
var cameraViewController: UIViewController?
var profileViewController: UIViewController?
So you have three options:
Don't make them optional. This requires that you initialize them with something when you initalize your TabBarViewController. Maybe the safest option.
If you know that cameraViewController and profileViewController are never nil in viewDidLoad:
self.viewControllers = [cameraViewController!, profileViewController!]
Check if cameraViewController and profileViewController are not nil in viewDidLoad. This smells like bad design to me though.
if let c = cameraViewController, let p = profileViewController {
self.viewControllers = [c, p]
}
So it boils down to how you initialize cameraViewController and profileViewController. Are they set before the tab bar view controllers is shown? If so, I recommend adding a custom init to your class.