gpt4 book ai didi

swift - 在 SwiftUI 中使用 NSTableView?

转载 作者:行者123 更新时间:2023-12-04 11:33:54 28 4
gpt4 key购买 nike

有没有人收到NSTableView与 SwiftUI 一起工作?每当我运行我的代码时,我的应用程序都不会加载,但也没有错误。没有表 View 的任何示例,但我认为它会使用 NSViewControllerRepresentable .我不完全确定您如何设计表格并将其添加到 View 中。感谢您的帮助!

struct SampleViewController: NSViewControllerRepresentable {

var tableView:NSTableView = {
let table = NSTableView(frame: .zero)
table.rowSizeStyle = .large
table.backgroundColor = .clear
return table
}()

func makeNSViewController(context: Context) -> NSViewController {

return NSViewController()
}

func updateNSViewController(_ nsViewController: NSViewController, context: Context) {
//tbd
}

func makeCoordinator() -> Coordinator {
Coordinator(self)
}

class Coordinator: NSObject, NSTableViewDataSource, NSTableViewDelegate {
var parent: SampleViewController

init(_ tvController: SampleViewController) {
self.parent = tvController
}

func numberOfRows(in tableView: NSTableView) -> Int {
return 10
}

func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
return nil
}

func tableView(_ tableView: NSTableView, heightOfRow row: Int) -> CGFloat {
return CGFloat(90)
}

func tableView(_ tableView: NSTableView, shouldSelectRow row: Int) -> Bool {
return false
}

}


}


struct SampleView: View {
var body: some View {
SampleViewController()
}
}

最佳答案

我有一种感觉,您可能已经弄清楚了这一点,但您实际上还没有设置 tableView属性为 view你的 View Controller 。因此,当呈现时,您的 SwiftUI View 将得到一个普通的 NSView 的支持。 .
在这个特定的例子中,我认为 NSViewRepresentable可能会更好,因为您的 Controller 无论如何都没有逻辑。
以防万一这是有帮助的,要记住的另一件事是协调员的角色及其与 parent 的关系。属性(property)。因为协调器是创建和重用的,它的parent不是 如果重新创建 SwiftUI View ,则更新。当我试图在 func updateNSViewController(_ nsViewController: NSViewController, context: Context) 中重新加载表数据时,这真的让我感到困惑。

关于swift - 在 SwiftUI 中使用 NSTableView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59056971/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com