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.