Чтобы реализовать свайп вправо в списке SwiftUI, я пытаюсь сделать UIViewControllerRepresentable UITableViewController. Однако он несовместим с панелью навигации, когда displayMode имеет значение .large.
Я думаю, когда прокрутка перемещается, она должна
- Изменить размер панели навигации.
- Отрегулируйте рамку Scrollview или List.
# 2 не работает с моим табличным представлением, поэтому нужно что-то делать. И мне нужна ваша помощь.
[Изображения]
введите описание изображения здесь
- Первый рендеринг работает нормально.
- После прокрутки появляется дополнительное пространство над табличным представлением
- После прокрутки вверх при нажатии в верхней части дисплея позиция нарушена.
- Иерархия представлений после прокрутки (исправлено после первого рендеринга)
[Код] для воспроизведения (после создания проекта swiftui из xcode, замените содержимое ContentView.swift приведенным ниже кодом.)
import SwiftUI
final class TableViewWrapper: UIViewControllerRepresentable {
func makeUIViewController(context: Context) -> UITableViewController {
let viewController = UITableViewController()
viewController.tableView.delegate = context.coordinator
viewController.tableView.dataSource = context.coordinator
return viewController
}
func updateUIViewController(_ uiViewController: UITableViewController, context: Context) {
uiViewController.tableView.reloadData()
}
func makeCoordinator() -> Coordinator {
Coordinator()
}
class Coordinator: NSObject, UITableViewDataSource, UITableViewDelegate {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 100
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: .subtitle, reuseIdentifier: nil)
cell.backgroundColor = .black
cell.textLabel!.textColor = .white
cell.textLabel!.text = "Test"
return cell
}
}
}
struct ContentView: View {
var body: some View {
NavigationView {
TableViewWrapper()
.navigationBarTitle("Nav title", displayMode: .large)
}
}
}