Oldmicah
Oldmicah

Reputation: 170

getting the MasterViewController from the DetailViewController in a UISplitViewController app

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

Answers (1)

Oldmicah
Oldmicah

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

Related Questions