将数据从 UIViewController 传递到 UISpiltView

Pass data from UIViewController to UISpiltView

现在我在将数据从 UIViewController 传递到 UISpiltViewController 时遇到了一些问题。 我的应用程序从 UIViewController 开始,在用户登录后,从 UIViewController 到 UISpiltViewController 有一个 segue,UISpiltViewController 是 NavigationViewController 的根视图,而这个 NavigationViewController 是 TableViewController 的根视图。我已经为这个TableViewController写了一个class,叫做MasterView,现在我想从loginView传递一些信息给这个MasterView。

  self.performSegueWithIdentifier("login", sender: self)

但是我想知道如何编写prepareforsegue函数。

   override func  prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    if segue.identifier == "login"
    {
        let controller = (segue.destinationViewController as UINavigationController).topViewController as MasterViewController

        controller.authorityNum = self.authorityArray
    }

}

我想传递一个数组,但我会得到 class 转换错误。请帮我解决这个问题。

像这样,

let destinationViewController = segue.destinationViewController as! MasterViewController

尝试这个我不确定,但我认为你的转场是 模型转场 所以

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "login"
    {
        var splitView:UISplitViewController = segue.destinationViewController as! UISplitViewController
        var controller = splitView.viewControllers.first?.topViewController as! MasterViewController
        controller.authorityNum = self.authorityArray
    }
}

尝试对可能有帮助的每一行进行 NSLog

Swift 3 个已接受的答案。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "login" {
            let splitView:UISplitViewController = segue.destination as! UISplitViewController
            let navController = splitView.viewControllers.first as! UINavigationController
            let controller = navController?.topViewController as! MasterViewController
            controller.authorityNum = self.authorityArray
    }
}