NSViewControllerRepresentable を使う

macOS

SwiftUI が徐々に普及してきましたね。

iOS の方では UIViewController を SwiftUI で使うために、
UIViewControllerRepresentable を用いました。

それの macOS 版は
NSViewControllerRepresentable
になります。

以下の表示が出る、最低限動くコードを以下に示します

Xcode 11.6 で動作確認済み

import Cocoa

class ViewController: NSViewController {
    var textField: NSTextField?

    override func loadView() {
        self.view = NSView()
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        textField = NSTextField(frame: NSRect(x: 10, y: 10, width: 100, height: 100))
        textField!.isBezeled = false
        textField!.drawsBackground = false
        textField!.isEditable = false
        textField!.isSelectable = false
        textField!.stringValue = "TEST"
        self.view.addSubview(textField!)
    }
}
import SwiftUI
import Cocoa

struct ViewControllerWrapper: NSViewControllerRepresentable {
    func makeNSViewController(context: Context) -> ViewController {
        let viewController = ViewController()

        return viewController
    }

    func updateNSViewController(_ nsViewController: ViewController, context: Context) {
    }
}
タイトルとURLをコピーしました