getting the MasterViewController from the DetailViewController in a UISplitViewController app

风格不统一 提交于 2019-12-08 07:16:48

问题


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?


回答1:


Found it.

let tNav = self.splitViewController?.viewControllers[0] as? UINavigationController
if let tMVC = tNav?.topViewController as? MasterViewController {
        masterViewController = tMVC
        stateMachine = tMVC.stateMachine
    }


来源:https://stackoverflow.com/questions/27151415/getting-the-masterviewcontroller-from-the-detailviewcontroller-in-a-uisplitviewc

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!