10

我想将 NavigationView 与 ScrollView 一起使用,但我没有看到列表项。

struct ContentView: View {
    var body: some View {
        NavigationView {
            ScrollView{
                VStack {
                    Text("Some stuff 1")
                    List{
                        Text("one").padding()
                        Text("two").padding()
                        Text("three").padding()
                    }
                    Text("Some stuff 2")
                }
            }
        }
    }
}

我看到的只有文字。如果我删除 ScrollView 我会看到所有内容,但文本会被推到最底部。我只是希望能够在一个漂亮的可滚动页面中添加列表和视图。

4

2 回答 2

22

期望来自内容的ScrollView维度,但List期望来自容器的维度 - 如您所见,存在冲突,因此列表的大小未定义,结果渲染引擎只是将其删除以避免歧义。

解决方案是根据您的需要为 List 定义一些大小,因此 ScrollView 现在将如何布局它,因此滚动视图可以滚动整个内容,而列表可以滚动内部内容。

例如。

演示

struct ContentView: View {
    @Environment(\.defaultMinListRowHeight) var minRowHeight

    var body: some View {
        NavigationView {
            ScrollView{
                VStack {
                    Text("Some stuff 1")
                    List {
                        Text("one").padding()
                        Text("two").padding()
                        Text("three").padding()
                    }.frame(minHeight: minRowHeight * 3).border(Color.red)
                    Text("Some stuff 2")
                }
            }
        }
    }
}
于 2020-04-26T08:56:12.513 回答
0

只是想抛出一个解决我所看到的与原始问题非常相似的答案 - 我在Label()我的部分前面放了一个项目List{ ... },当我删除它时,Label() { }我能够List再次看到我的内容。可能 List 与它周围的其他项目(Xcode 13 Beta 5)有问题。

于 2021-09-07T04:43:33.997 回答