Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
Navigation SwiftUI Scrollview中断导航链接行为_Navigation_Scrollview_Swiftui_Navigationlink - Fatal编程技术网

Navigation SwiftUI Scrollview中断导航链接行为

Navigation SwiftUI Scrollview中断导航链接行为,navigation,scrollview,swiftui,navigationlink,Navigation,Scrollview,Swiftui,Navigationlink,我在细节视图中切换设置时遇到问题,切换设置后,导航会立即弹出到主屏幕。这仅在使用滚动视图而不是主屏幕上的列表时发生。是否有人有解决方案或知道这是否是将被修复的bug?今天我等待了Xcode 11 Beta 7,但这并没有解决这个问题 滚动视图的当前行为: 单击要转到详细信息屏幕的行 单击“开始”以切换收藏夹设置 立即跳回主屏幕 ScrollView的预期行为(列表的当前行为): 单击要转到详细信息屏幕的行 单击“开始”以切换收藏夹设置 停留在详细信息屏幕上,可以反复切换最喜爱的设置 单击后退按钮

我在细节视图中切换设置时遇到问题,切换设置后,导航会立即弹出到主屏幕。这仅在使用滚动视图而不是主屏幕上的列表时发生。是否有人有解决方案或知道这是否是将被修复的bug?今天我等待了Xcode 11 Beta 7,但这并没有解决这个问题

滚动视图的当前行为:

  • 单击要转到详细信息屏幕的行
  • 单击“开始”以切换收藏夹设置
  • 立即跳回主屏幕
  • ScrollView的预期行为(列表的当前行为):

  • 单击要转到详细信息屏幕的行
  • 单击“开始”以切换收藏夹设置
  • 停留在详细信息屏幕上,可以反复切换最喜爱的设置
  • 单击后退按钮返回主屏幕

    import SwiftUI
    import Combine
    
    struct Sport: Identifiable{
        var id = UUID()
        var name : String
        var isFavorite = false
        var school : String
    }
    
    final class UserData: ObservableObject  {
        @Published var sportsData =
            [
                Sport(name: "soccer", isFavorite: false, school: "WPI"),
                Sport(name: "tennis", isFavorite: true, school: "WPI"),
                Sport(name: "swimming", isFavorite: true, school: "WPI"),
                Sport(name: "running", isFavorite: true, school: "RIT"),
        ]
    }
    
    struct ContentView: View {
        @EnvironmentObject var userData: UserData
    
        var body: some View {
            NavigationView{
                List{
                    ForEach(userData.sportsData){ sport in
                        if sport.isFavorite{
                            NavigationLink(destination:
                                DetailsView(sport: sport)
                            ){
                                HStack {
                                    Text(sport.name)
                                    Spacer()
                                    Image(systemName: "star.fill")
                                        .foregroundColor(sport.isFavorite ? .yellow : .gray)
                                }
                            }
    
                        }
    
                    }
                }
            }.navigationBarTitle("Settings")
        }
    }
    
    struct DetailsView: View {
        @EnvironmentObject var userData: UserData
        var sport: Sport
        var sportIndex: Int {
            userData.sportsData.firstIndex(where: { $0.id == sport.id })!
        }
    
        var body: some View {
            ZStack {
                Text(sport.name).offset(x: 0, y: 100)
                Button(action: {
                    self.userData.sportsData[self.sportIndex].isFavorite.toggle()
                    print(self.sport.isFavorite)
                }) {
                    Image(systemName: "star.fill")
                        .foregroundColor(self.userData.sportsData[self.sportIndex].isFavorite ? .yellow : .gray)
                }
            }.padding(.horizontal)
        }
    }
    
    
    
    #if DEBUG
    struct Testing_Previews: PreviewProvider {
        static var previews: some View {
            ContentView()
                .environmentObject(UserData())
        }
    }
    #endif
    

  • 这是一个奇怪的错误,我还不能想出一个解决办法。完全无关:似乎您在错误的视图上使用了
    .navigationBarTitle()
    。它应该修改
    导航视图
    的内容视图,而不是
    导航视图
    本身。在您的情况下(
    列表
    滚动视图
    )。这样,您可以分别为每个推送视图指定不同的名称。您好,我在项目中遇到了完全相同的问题。你能找到解决办法吗?不幸的是没有。目前看来,这似乎是SwiftUI的一个限制。希望它能在今年夏天WWDC之后被修复。我也有这个问题…真的很烦人。在XCode 12中,我似乎仍然有这个问题,或者一个非常类似的问题。你还在经历这个吗?