0

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

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

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

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

我怎么做?赛格斯?层?请迫切需要帮助,因为我无法弄清楚故事板,但想和他们一起工作很多。这会让我开始。

我在想的另一种选择是,如果我使用 splitview 会更好吗?那么我可以用另一个完全正确的替换右侧视图sontroller?

链接到 Xcode 中的项目文件

我的故事板

4

2 回答 2

0

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

于 2018-10-16T14:46:41.433 回答
0

我用 textlable 创建了这个,但是是一样的。

  1. 创建“@IBOutlet 弱变量 labelListInvoices:NSTextField!”
  2. 创建操作“@IBAction func onListInvoices(_ sender: AnyObject) { let act = InvoicesList(nibName: "InvoicesList", bundle: nil) app.show(act!)"
  3. 创建一个 var "var app = NSApp.delegate as!AppDelegate"
  4. 现在去 appdelegate 并创建这个 func "// APP DIRECTOR

    // 使用: // let act = MainView(nibName: "MainView", bundle: nil) // app.show(act!) func show(_ newController: ControllerType, with message: Parameters? = nil) { let newView =新控制器视图

    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)
            }
        }
    }
    

    } "

于 2017-04-05T15:25:07.423 回答