0

我在 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 弱 var linearPwrBG: LinearBarGraph_t! 出口; 请注意,在 viewDidLoad 中,我将 pctInRange 字段设置为 50。这在应用程序启动时工作正常(条形图填充到 50% 标记)。

问题出在滑块上。我已经从滑块向右拖动到 RxDisplay1 类以生成 linearPwrSlider 动作函数。连接似乎很好(函数声明旁边的小实心点,右键单击滑块显示转到此函数的操作)。

当我运行代码时,显示(和选项卡)正确出现。我的条形图显示 50% 的功率。但是,当我用鼠标触摸滑块时,系统崩溃了。我在 AppDelegate 中休息,抱怨“访问不正确”。

我在过去的项目中一直使用滑块。但是,这是我第一次使用选项卡式控制器,所以我怀疑我将选项卡式控制器连接到系统其余部分的方式有问题。

4

0 回答 0