我在IB中创建了一个带有相应XIB的NSViewController。 FWIW,我有以下窗口/视图层次结构:
class RxDemoController: NSWindowController {
@IBOutlet weak var statusPaneView: NSView!
@IBOutlet weak var annunciatorPaneView: NSView!
@IBOutlet weak var trigaStatusPaneView: NSView!
@IBOutlet weak var rxTabView: NSView!
override var windowNibName :String? { return "RxDemoController" }
override func windowDidLoad() {
super.windowDidLoad()
let statusPaneViewController = StatusPaneViewController()
statusPaneView.addSubview( statusPaneViewController.view )
let annunciatorPaneViewController = AnnunciatorPaneViewController()
annunciatorPaneView.addSubview( annunciatorPaneViewController.view )
let trigaStatusPaneController = TrigaStatusPaneController()
trigaStatusPaneView.addSubview( trigaStatusPaneController.view )
let rxTabController = RxTabController()
rxTabView.addSubview( rxTabController.view )
}
}
我们可以忽略statesPaneViewController,annunciatorPaneViewController和trigaStatusPaneController,因为它们都正常工作。 rxTabController对象是一个选项卡视图,在RXTabController.swift中定义如下:
class RxTabController: NSTabViewController {
@IBOutlet weak var rxDisplay1TabView: NSView!
override var nibName :String? { return "RxTabController" }
override func viewDidLoad() {
super.viewDidLoad()
let rxDisplay1ViewController = RxDisplay1()
rxDisplay1TabView.addSubview( rxDisplay1ViewController.view )
}
RxDisplay1.xib目前包含两个对象:条形图对象(自定义组件:LinearBarGraph_t,在其他项目中工作正常,在第一个选项卡的视图控制器上工作正常),第二个对象是NSSlider。 NSSlider给了我一些问题。这是RxDisplay1的代码:
class RxDisplay1: NSViewController {
@IBOutlet weak var linearPwrBG: LinearBarGraph_t!
override func viewDidLoad() {
super.viewDidLoad()
linearPwrBG.pctInRange = 50
}
@IBAction func linearPwrSlider(sender: NSSlider) {
}
}
我从条形图对象中右键拖动以生成@IBOutlet弱变量linearPwrBG:LinearBarGraph_t!出口;请注意,在viewDidLoad中,我将pctInRange字段设置为50.当应用程序启动时,此工作正常(条形图填充到50%标记)。
问题在于滑块。我已经从滑块拖动到RxDisplay1类以生成linearPwrSlider动作函数。连接似乎很好(函数声明旁边的小点填充,右键单击滑块显示进入此函数的操作)。
运行代码时,显示(和标签)正确显示。我的条形图显示50%的功率。但是,当我用鼠标触摸滑块时系统崩溃。我在AppDelegate中休息时抱怨" Bad Access"。
我在过去的项目中一直使用滑块。但是,这是我第一次使用选项卡式控制器,因此我怀疑将选项卡式控制器连接到系统其他部分的方式有问题。