在Swift Storyboard中从一个NSViewController切换到另一个NSViewController

时间:2016-09-06 12:12:52

标签: swift xcode nsview nsviewcontroller nsstoryboard

我有一个问题,我现在试图解决很长一段时间。项目文件也提供。

所以我有以下想法,有一个带有按钮的侧边栏,当点击按钮时,它只切换右侧内容。

我最初创建的项目只有一个故事板。 Window启动第一个ViewController,带有按钮和自定义视图。

我需要的是当按下其中一个按钮时,自定义视图被另一个ViewController的内容替换。只是视图,而不是整个以前的视图控制器被另一个视图控制器取代。

我该怎么做?塞格斯?图层?请急需帮助,因为我无法弄清楚故事板,但想与他们合作很多。这将让我开始。

我想的另一个选择是,如果我使用splitview它会更好吗?然后我可能会用另一个完全正确的替换右侧视图sontroller?

Link to project file in Xcode

My Storyboard

2 个答案:

答案 0 :(得分:0)

我用textable创建它但是是相同的。

  1. 创建" @IBOutlet弱var labelListInvoices:NSTextField!"
  2. 创建操作" @IBAction func onListInvoices(_ sender:AnyObject){     let act = InvoicesList(nibName:" InvoicesList",bundle:nil)     app.show(动作!)"
  3. 创建一个var" var app = NSApp.delegate as!的AppDelegate"
  4. 现在转到appdelegate并创建此函数 " // APP DIRECTOR

    //使用: // let act = MainView(nibName:" MainView",bundle:nil) // app.show(行动!) func show(_ newController:ControllerType,with message:Parameters?= nil){     让newView = newController.view

    if let frame = NSApp.mainWindow?.contentView?.frame {
        newView.frame = frame                           // Resize the view to the window instead
    }
    
    guard let main = NSApp.mainWindow?.contentViewController else { return }
    
    if main.childViewControllers.count < 1 {            // if no controllers, then it's main controller
        main.addChildViewController(newController)                // add new controller
        main.view.addSubview(newView)                   // add new view to main view
        if message != nil {
            newController.notify(message)
        }
    } else {
        let current = main.childViewControllers.last    // get lasr controller as current before adding new
        main.addChildViewController(newController)                // add new controller
        main.transition(from: current!, to: newController, options: [.crossfade]){
            if message != nil {
                newController.notify(message)
            }
        }
    }
    

    } &#34;

答案 1 :(得分:0)

您可以尝试使用NSTabView并根据需要插入NSTabViewItem对象。每个NSTabView都可以使用自定义NSViewController启动。若要隐藏默认选项卡按钮,可以将NSTabView的边框类型设置为“无”。可以通过selectTabViewItem()以编程方式切换选项卡。