私たちの残りの部分は、私の場合は、シート上のビュー上のボタンのため、「多くのサブビュー」はそうではありません。シートのビューコントローラは約100行です。まだデバッグ中です...
現在、VCは次のとおりです。 snp.makeConstraints呼び出しは、Snapkit(GitHub製)用です。
@objc
class ThreadEditSheetViewController: NSViewController {
/// The container for the graphics view
@IBOutlet var sheetView: NSView!
/// The information packet initialized by the invoking view controller
var info: ThreadEditInfo!
/// API
override func viewDidLoad() {
super.viewDidLoad()
}
/// API
override func viewWillAppear() {
guard let gvc = (try? self.bundleLoader(id: "GraphicsViewController")) as? GraphicsViewController else {
fatalUserAlert(error: AppError.UIConstructionFailure, message: "Can't find GraphicsViewController for ThreadEditSheetViewController")}
let gv = gvc.view
self.view.addSubview(gv)
// Spaces in title text move it left to avoid visual overlap with scroll bar. Don't know how to do it with
// constraints given the scrolling view
let done = makeButton(gvc: gvc, title: "done ", action: #selector(doneEditing(_:)))
done.snp.makeConstraints{ (make) in
make.top.equalTo(gv).offset(-5)
make.right.equalTo(gv).offset(-5)
}
let cancel = makeButton(gvc: gvc, title: "cancel", action: #selector(cancelEditing(_:)))
cancel.snp.makeConstraints{ (make) in
make.top.equalTo(gv).offset(-5)
make.left.equalTo(gv).offset(5)
}
self.view.becomeFirstResponder()
super.viewWillAppear()
return
}
func makeButton(gvc: NSViewController, title: String, action: Selector) -> NSButton {
let button = NSButton(title: title, target: self, action: action)
let gv = gvc.view
gv.addSubview(button)
button.backgroundColor = .clear
button.setButtonType(.momentaryChange)
button.isTransparent = true
return button
}
@objc
func doneEditing(_ sender: Any) {
self.dismissViewController(self)
}
@objc
func cancelEditing(_ sender: Any) {
self.dismissViewController(self)
}
}
"NSViewControllerには多くのサブビューを持つNSViewControllerがあります。"それを見るのはあなただけです。私たちの残りの人はしません。 –