Ich habe gerade ein neues Projekt mit Storyboard erstellt und mit dem bereitgestellten Layout hinzugefügt, um den Ansichts-Controllern eine benutzerdefinierte Ansicht oben anzuzeigen. Für die benutzerdefinierte Ansicht wurden Schaltflächen hinzugefügt, style = square, type = toggle und die bereitgestellten Symbole der Typvorlage verwendet. Den Schaltflächen 0-4 wurde ein Tag zugewiesen und sie wurden in eine horizontale Stapelansicht verschoben. Dann wurde eine horizontale Linie und eine Containeransicht hinzugefügt. Dann füge ich einen Tab-View-Controller zum Storyboard hinzu und bette ihn in die Containeransicht ein. Alle Tasten sind mit derselben Aktion verbunden.
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
}
}
OK so ist dies fast, was ich will, es sei denn ich die Registerkarte Tasten über dem Fenster Eigenschaften angezeigt werden sollen und nicht in der Apps-Symbolleiste. –
@DuncanGrenewald Leider müssen Sie, wenn Sie ein benutzerdefiniertes Verhalten benötigen, einen anderen Ansatz verwenden. NSTabView mit tabellarischem Stil und bind ausgewählten Index an eine Variable im Controller. Erstellen Sie dann eine Reihe von Bildschaltflächen oder andere Arten von Schaltflächen, und platzieren Sie sie in der Stapelansicht und der Ankerstapelansicht an der Tabellenoberkante NSTabView. Genau wie wir in iOS tun. Dann haben Sie eine Auswahllogik e.t.c. –
Mmm ok, scheint seltsam, sie verwenden die Xcode-Stil Tabs überall, aber nicht als Standardoption –