首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数据从NSViewController传递到NSSplitViewController中的另一个NSViewController?

将数据从NSViewController传递到NSSplitViewController中的另一个NSViewController?
EN

Stack Overflow用户
提问于 2018-07-03 22:56:53
回答 2查看 487关注 0票数 0

你好,我在向NSSplitViewController发送数据时遇到了问题。它似乎不像IOS开发中那样工作。

firstController:

代码语言:javascript
复制
class LoginController: NSViewController {
 //.....
  @IBAction func Login(_ sender: Any) {
     //....
     let story = NSStoryboard(name: NSStoryboard.Name(rawValue: "Main"), 
                bundle: nil).instantiateController(withIdentifier: 
                NSStoryboard.SceneIdentifier(rawValue: "SPLIT")) as! 
                NSSplitViewController
      let vc : ContainerController = ContainerController();
      vc.passedData = "karosas";
      self.view.window?.contentViewController = story;
     //....
   }
 //.....
}

第二个NSSplitViewController:

代码语言:javascript
复制
import Cocoa

class ContainerController: NSSplitViewController {

    var passedData = "";

    override func viewDidLoad() {
        super.viewDidLoad()
        print(passedData);
        print("nzn");
    }

}

现在,我正在尝试将数据发送到NSViewSplitController。我需要将数据传递给NSSplitViewController格式的NSViewController。我确实尝试了很多不同的方法,但都失败了。所以我想我需要先把数据传递给SplitController,然后再传递给ViewController。但我甚至不能向NSSplitViewController发送任何数据。有人能帮我吗?

EN

回答 2

Stack Overflow用户

发布于 2018-07-17 10:37:31

如果LoginController和MenuController都在ContainerController中,则可以执行以下操作:

LoginController

代码语言:javascript
复制
import Cocoa

class LoginController: NSViewController {
 //.....
  @IBAction func Login(_ sender: Any) {
     //....
     self.userName = value["name"] as! String
     let MenuVC = parent?.childViewControllers[1] as! MenuController // 0 or 1 depending on order in SplitView
      MenuVC.passedData = self.username
      self.view.window?.contentViewController = parent as! ContainerController
     //....
   }
 //.....
}

MenuController

代码语言:javascript
复制
import Cocoa

class MenuController: NSViewController {

    var passedData = ""

    override func viewDidLoad() {
        super.viewDidLoad()
        print(passedData)
        print("nzn")
    }

}
票数 2
EN

Stack Overflow用户

发布于 2018-07-04 00:48:02

我已经设法用下面的代码做到了这一点。

代码语言:javascript
复制
        self.userName = value["name"] as! String;
        let story = NSStoryboard(name: NSStoryboard.Name(rawValue: "Main"), bundle: nil)
        .instantiateController(withIdentifier: NSStoryboard.SceneIdentifier(rawValue: "SPLIT")) 
        as! ContainerController
        let dest = story.childViewControllers[0] as! MenuController;
        dest.passData = self.userName;
        self.view.window?.contentViewController = story;

我不知道这是不是一个好的方法,但它是有效的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51157630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档