gpt4 book ai didi

swift - 催化剂 NavigationView 上的列表滚动卡住

转载 作者:行者123 更新时间:2023-12-04 08:08:44 47 4
gpt4 key购买 nike

我遇到了一个奇怪的问题 NavigationView在 macCatalyst 上。下面是一个带有侧边栏和详细信息 View 的简单应用程序。选择侧边栏上的项目会显示带有可滚动列表的详细信息 View 。
第一个 NavigationLink 一切正常,详细 View 显示并可自由滚动。但是,如果我选择一个列表项来触发指向第二个详细信息 View 的链接,则滚动开始,然后卡住。该应用程序仍然有效,只有详细 View 滚动被锁定。
相同的代码在 iPad 上运行良好,没有任何卡住。如果我为 macOS 构建,详细 View 中的 NavigationLink 将不起作用。
是否有任何已知的解决方法?
这是它的样子,单击 LinkedView 后,短暂滚动,然后 View 卡住。仍然可以单击侧边栏上的后退按钮或其他项目,但 ListView 被阻止。
enter image description here
这是代码:
内容 View .swift

import SwiftUI

struct ContentView: View {

var names = [NamedItem(name: "One"), NamedItem(name: "Two"), NamedItem(name:"Three")]

var body: some View {
NavigationView {
List() {
ForEach(names.sorted(by: {$0.name < $1.name})) { item in
NavigationLink(destination: DetailListView(item: item)) {
Text(item.name)
}
}
}
.listStyle(SidebarListStyle())

Text("Detail view")
}
}
}

struct NamedItem: Identifiable {
let name: String
let id = UUID()
}

struct DetailListView: View {

var item: NamedItem

let sections = (0...4).map({NamedItem(name: "\($0)")})

var body: some View {
VStack {
List {
Text(item.name)
NavigationLink(destination: DetailListView(item: NamedItem(name: "LinkedView"))) {
listItem(" LinkedView", "Item")
.foregroundColor(Color.blue)
}

ForEach(sections) { section in
sectionDetails(section)
}
}
}
}

let info = (0...12).map({NamedItem(name: "\($0)")})

func sectionDetails(_ section: NamedItem) -> some View {
Section(header: Text("Section \(section.name)")) {
Group {
listItem("ID", "\(section.id)")
}
Text("")
ForEach(info) { ch in
listItem("Item \(ch.name)", "\(ch.id)")
}
}
}

func listItem(_ title: String, _ value: String, tooltip: String? = nil) -> some View {
HStack {
Text(title)
.frame(width: 200, alignment: .leading)
Text(value)
.padding(.leading, 10)
}
}

}

TestListApp.swift
import SwiftUI

@main
struct TestListApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}

最佳答案

我在 Mac Catalyst 应用程序上遇到了同样的问题。在真实设备(带有 iOS 14.4.2 的 iPhone 7)上没有问题,但是对于 Mac Catalyst(带有 Big Sur 11.2.3 的 MacBook Pro),导航 View 中的滚动非常随机,如您所解释的那样。我发现问题出在 Macbook 的触控板上,并且与滚动指示器有关,因为使用外部鼠标时不存在此问题。所以解决这个问题最简单的方法是在导航 View 中隐藏垂直滚动指示器。至少它对我有用。下面是来自根 View “ContentView”的一些代码,我是如何做到的。不幸的是,大数据丢失了滚动指示器,但至少滚动有效。

import SwiftUI

struct TestView: View {
var body: some View {
NavigationView {
List {
NavigationLink(destination: NewView()) {
Text("Navigation Link to new view")
}
}
.onAppear {
UITableView.appearance().showsVerticalScrollIndicator = false
}
}
}
}

关于swift - 催化剂 NavigationView 上的列表滚动卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66087776/

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