los*_*aut 7 appkit swift swiftui
有没有人NSTableView开始使用 SwiftUI?每当我运行我的代码时,我的应用程序都不会加载,但也没有错误。没有表视图的任何示例,但我认为它会使用NSViewControllerRepresentable. 我不完全确定您如何设计表格并将其添加到视图中。感谢您的帮助!
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()
}
}
Run Code Online (Sandbox Code Playgroud)
我有一种感觉,您可能已经弄清楚了这一点,但您实际上尚未将该属性设置tableView为view视图控制器的属性。因此,当呈现时,您的 SwiftUI 视图将由一个普通的NSView.
在这个特定的例子中,我认为 anNSViewRepresentable可能会更好,因为你的控制器无论如何都没有逻辑。
为了以防万一这有帮助,另一件事要记住的是协调员的角色及其与财产的关系parent。由于协调器是创建并重用的,因此如果重新创建 SwiftUI 视图,协调器不会更新parent。当我尝试重新加载表数据时,这确实让我绊倒了func updateNSViewController(_ nsViewController: NSViewController, context: Context)
| 归档时间: |
|
| 查看次数: |
1879 次 |
| 最近记录: |