gpt4 book ai didi

ios - 如何为遗留 TableView 编写 SwiftUI 包装器

转载 作者:行者123 更新时间:2023-11-28 13:25:13 24 4
gpt4 key购买 nike

寻找如何为 TableView 编写 SwiftUI 包装器的示例。

这样做的目的是由于 SwiftUI 在列表数据方面的限制。参见 my previous post ,它描述了我认为是 SwiftUI 当前的开发不足和/或错误,其中当使用大型数据集并修改显示的行数时,UI 会锁定并锁定 CPU。

我相信此时,唯一的解决方法是编写自定义包装器以将遗留 TableView 合并到我的 SwiftUI View 中。我不知道如何完成此操作,也找不到任何现有示例这个特定的 UIView。任何人都可以提供示例代码方面的帮助吗?

TableView 必须从 CoreData 实体中提取数据..

我希望能够这样调用它:

struct ContentView: View {

var body: some View {

MyCustomTableViewWrapper()

}

}

这是我到目前为止使用 UIViewRepresentable 的结果,我想不通的是如何将我的 CoreData 放入这个 UITableView 中:


import Foundation
import UIKit
import SwiftUI
import CoreData


struct LegacyTableView : UIViewRepresentable {

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


func makeUIView(context: Context) -> UITableView {
let control = UITableView()
control.refreshControl = UIRefreshControl()
control.refreshControl?.addTarget(context.coordinator, action:
#selector(Coordinator.handleRefreshControl),
for: .valueChanged)

// Simply to give some content to see in the app
let label = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 30))
label.text = "Table View Content"
control.addSubview(label)

return control
}


func updateUIView(_ uiView: UITableView, context: Context) {
// code to update scroll view from view state, if needed
}

class Coordinator: NSObject {
var control: LegacyTableView

init(_ control: LegacyTableView) {
self.control = control
}

@objc func handleRefreshControl(sender: UIRefreshControl) {
// handle the refresh event

sender.endRefreshing()
}
}


}

最佳答案

使用 UIViewControllerRepresentableUIViewRepresentable,如 Apple's tutrial 中所述.

关于ios - 如何为遗留 TableView 编写 SwiftUI 包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58495274/

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