Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 在WatchOS中使用列表时,滚动行为不正确_Swift_Xcode_Swiftui_Watchos_Watchos 6 - Fatal编程技术网

Swift 在WatchOS中使用列表时,滚动行为不正确

Swift 在WatchOS中使用列表时,滚动行为不正确,swift,xcode,swiftui,watchos,watchos-6,Swift,Xcode,Swiftui,Watchos,Watchos 6,行为#1: 我试图在我有一个元素列表之前有一个文本,让所有的东西都有连贯的滚动。我尝试过在许多方面修改代码,结果得到了不同的错误行为。 以下是行为1的代码: struct Thing: Hashable { var name: String var number: Int } struct SummaryView: View { var things = [Thing(name: "Paul", number: 42),Thing(name: "Jackie", numb

行为#1: 我试图在我有一个元素列表之前有一个文本,让所有的东西都有连贯的滚动。我尝试过在许多方面修改代码,结果得到了不同的错误行为。 以下是行为1的代码:

struct Thing: Hashable {
    var name: String
    var number: Int
}
struct SummaryView: View {
    var things = [Thing(name: "Paul", number: 42),Thing(name: "Jackie", number: 41),Thing(name: "James", number: 49),Thing(name: "Paola", number: 22)]
    var body: some View {
        VStack(alignment: .leading){
            Text("Text 1")
            Text("Text 2")
            Text("Text 3")
            Text("Text 4")
            List{
                ForEach(self.things, id: \.self){ thing in
                    VStack(alignment: .leading){
                        Text(thing.name)
                        Text("\(thing.number) Years")
                            .foregroundColor(Color.blue)
                    }
                    .padding()
                    .frame(minWidth: 0, maxWidth: .infinity, alignment: Alignment.leading)
                }
            }
            Spacer()
            NavigationLink(destination: Text("HI")){
                Text("Finished")
            }

        }.edgesIgnoringSafeArea(.bottom)
    }
}
这使得屏幕上有一小部分是列表,可以滚动:这意味着我一次只能看到一个列表元素,并且只能滚动视图的该部分(列表元素)

行为#2: 我还尝试将列表放在
滚动视图中,这与行为2有关,其中有两个不同的可滚动区域:第一个是文本区域(“文本1”等)和列表的容器/视图(意味着我无法滚动单个元素),第二个滚动区域是列表中的实际元素,但一旦到达顶部元素,滚动部分就不会继续到文本等:

import SwiftUI

struct Thing: Hashable {
    var name: String
    var number: Int
}
struct SummaryView: View {
    var things = [Thing(name: "Paul", number: 42),Thing(name: "Jackie", number: 41),Thing(name: "James", number: 49),Thing(name: "Paola", number: 22)]
    var body: some View {
        ScrollView{
            VStack(alignment: .leading){
                    Text("Text 1")
                    Text("Text 2")
                    Text("Text 3")
                    Text("Text 4")
                    List{
                        ForEach(self.things, id: \.self){ thing in
                            VStack(alignment: .leading){
                                Text(thing.name)
                                Text("\(thing.number) Years")
                                    .foregroundColor(Color.blue)
                                }
                            .padding()
                            .frame(minWidth: 0, maxWidth: .infinity, alignment: Alignment.leading)
                        }
                    }.aspectRatio(contentMode: .fit)
                Spacer()
                NavigationLink(destination: Text("HI")){
                    Text("Finished")
                }

            }

        }.edgesIgnoringSafeArea(.bottom)
    }
}
我还尝试使用VStack切换ScrollView,以获得如下内容:

VStack(alignment: .leading){
    ScrollView {
           .
           .
           .
    }
}
这就像行为2:

关于如何获得所需行为的任何建议(当您滚动浏览文本时,然后滚动列表元素(意味着滚动越多,看到的文本越少),直到您到达列表底部等)


当然,如果没有我实现一个新的“列表”视图,然后使用for-each循环来迭代元素

如果您将4个
文本
s放入
列表
中,它将随之滚动。也不需要
垫片

var body: some View {
    VStack(alignment: .leading) {
        List {
            VStack {
                Text("Text 1")
                Text("Text 2")
                Text("Text 3")
                Text("Text 4")
            }   .padding()
            ForEach(self.things, id: \.self){ thing in
                VStack(alignment: .leading){
                    Text(thing.name)
                    Text("\(thing.number) Years")
                        .foregroundColor(Color.blue)
                }   .padding()
            }
        }
        NavigationLink(destination: Text("HI")){
            Text("Finished")
        }

    }.edgesIgnoringSafeArea(.bottom)
}