2016-11-22 66 views
0

enter image description here如何创建类似的Xcode属性面板

我试图创建一个类似于Xcode的属性面板一个标签面板,但标准的标签面板似乎有不同的外观和没有感觉标签面板方式来改变它。应该使用哪些控件来创建类似的标签面板?

编辑: 我没有使用NSTabViewController - 只是有TabView!

回答

0

如果您使用故事板,只需将选项卡视图控制器拖到表面并连接到窗口。 然后去标签视图控制器的IB设置和改变风格的工具栏,如下所示:

enter image description here

然后添加选项卡和添加图片到每个标签,如下所示:

enter image description here

运行您的应用并享受XCode设置视图的外观:

enter image description here

+0

行,所以这几乎是我想要的,但我想的标签按钮,出现上面的属性面板,而不是在应用程序工具栏。 –

+0

@DuncanGroenewald不幸的是,如果你需要任何类型的自定义行为,你需要使用不同的方法。带有tabless风格的NSTabView,并将选定的索引绑定到控制器中的变量。然后创建一组图像按钮或其他类型的按钮,并将它们放置在堆栈视图中,并将堆栈视图定位到桌面NSTabView的顶部。与我们在iOS中执行操作的方式相同。然后有一些选择逻辑e.t.c. –

+0

好吧,看起来很奇怪,他们全都使用Xcode样式选项卡,但没有将其作为标准选项 –

1

我刚创建了一个故事板和提供的布局的新项目,添加到视图控制器视图顶部的自定义视图。为自定义视图添加按钮,style = square,type = toggle,并使用提供的类型模板图标。为按钮0-4分配标签,并将它们放到水平堆栈视图中。然后添加一条水平线和一个容器视图。然后,我将一个Tab View Controller添加到故事板并将其嵌入到容器视图中。所有按钮都连接到相同的动作。

import Cocoa 

class ViewController: NSViewController { 

    @IBOutlet var myStackView: NSStackView! 

    var oldSelection: Int = 0 
    var newSelection: Int = 0 

    var buttons: [NSButton]? 
    var tabViewDelegate: NSTabViewController? 

    @IBAction func selectedButton(_ sender: NSButton) { 
     newSelection = sender.tag 
     tabViewDelegate?.selectedTabViewItemIndex = newSelection 

     buttons![oldSelection].state = .off 
     sender.state = .on 

     oldSelection = newSelection 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view. 
     buttons = (myStackView.arrangedSubviews as! [NSButton]) 
    } 

    override var representedObject: Any? { 
     didSet { 
     // Update the view, if already loaded. 
     } 
    } 

    override func prepare(for segue: NSStoryboardSegue, sender: Any?) { 
     // Once on load 
     tabViewDelegate = segue.destinationController as? NSTabViewController 
    } 

}