6

単純な分割ビューを設定するのにかなりの時間を費やしています。最初の分割ビューは折りたたまれています。最小幅を設定する必要があります。私がオンラインで見るもの (NSSplitViewController/NSSplitView はほとんどない) はすべて Objective-C 用であり、すべてをアプリ デリゲートに入れ、XIB を使用します。

シナリオは次のとおりです。2 つの分割ビュー (2 つのビュー コントローラー) を持つ SplitView コントローラーへのセグエを持つウィンドウ コントローラー。

NSSplitViewDelegate が必要なオブジェクトはどれですか?

編集:コードスニペットの追加: たとえば、私はこれを持っています:

import Cocoa

class ViewController: NSSplitViewController, NSSplitViewDelegate {


    @IBOutlet weak var pdlSplitView: NSSplitView!

    override func viewDidLoad() {
        super.viewDidLoad()

        }
    override func splitView(splitView: NSSplitView, constrainMinCoordinate proposedMinimumPosition: CGFloat, ofSubviewAt dividerIndex: Int) -> CGFloat {
        return proposedMinimumPosition + 200
    }

}

私が見逃しているものは他にありますか?

ありがとう

アップデート

以下のコメントに基づいて、変更を加えましたが、AppDelegate のクラス定義で sigAbort を取得するようになりました。完全なコード

ビューコントローラー:

import Cocoa

class ViewController: NSSplitViewController, NSSplitViewDelegate {


    @IBOutlet weak var pdlSplitView: NSSplitView!

    let publicDataListings : PDL = PDL()


    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
        self.pdlSplitView.delegate = self

    }

    override func splitView(splitView: NSSplitView, constrainMinCoordinate proposedMinimumPosition: CGFloat, ofSubviewAt dividerIndex: Int) -> CGFloat {
    return proposedMinimumPosition + 200
    }

}

サイドバーViewController:

import Cocoa

class SidebarViewController: NSViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do view setup here.
    }


}

DatasetViewController:

import Cocoa

class DatasetViewController: NSViewController, NSSplitViewDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do view setup here.
    }

}

更新 カスタム NSSplitViewController クラスを取り除き、2 つの NSSplitView クラスを作成しました。1 つは制約メソッドです。これで、両方のサブビューが表示されますが、実際よりもはるかに小さいです。

ここに画像の説明を入力

Swift と Storyboards でこれを行ったはいますか?

4

3 に答える 3