Reputation: 170
I have a standard SplitViewController app in Swift in Xcode 6.1.1. It would be very convenient for my DetailViewController have a pointer to my MasterViewController. (I don't need to send notifications, but I need to pull the current statemachine from my MVC)
My thought was that I would use my DetailViewController viewDidLoad method to grab the MasterViewController from the SplitViewController.
In my DetailViewController:viewDidLoad I have
(snip)
let tVC = self.splitViewController?.viewControllers[0] as? UIViewController
let tNav = self.splitViewController?.viewControllers[0] as? UINavigationController
let tMVC = self.splitViewController?.viewControllers[0] as? MasterViewController
When I inspect these, my tVC and tNav variables were successfully set, but my tMVC was nil. I thought that the splitViewController.viewController[0] would give me my MasterViewController directly, but I'm getting a UINavigationController instead.
Am I wrong/is there a better way to do this?
Upvotes: 1
Views: 525
Reputation: 170
Found it.
let tNav = self.splitViewController?.viewControllers[0] as? UINavigationController
if let tMVC = tNav?.topViewController as? MasterViewController {
masterViewController = tMVC
stateMachine = tMVC.stateMachine
}
Upvotes: 1