2016-11-22 60 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 
    } 

}