Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.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
Ios SwiftUI导航链接返回按钮在预览中工作,但在模拟器或设备中不工作_Ios_Swift_Xcode_Swiftui_Navigationview - Fatal编程技术网

Ios SwiftUI导航链接返回按钮在预览中工作,但在模拟器或设备中不工作

Ios SwiftUI导航链接返回按钮在预览中工作,但在模拟器或设备中不工作,ios,swift,xcode,swiftui,navigationview,Ios,Swift,Xcode,Swiftui,Navigationview,我正在尝试使用一个简单的导航视图,带有指向不同视图的导航链接。当运行应用程序并按下导航链接时,它会将我带到新视图 然而,当我在模拟器或设备上时,“后退”按钮不起作用,而在预览上它可以正常工作 HomeView() .tabItem { Image(systemName: "house.fill") Text("Home") } .onTapGesture { self.selectedTab = 2 } .tag(2)

我正在尝试使用一个简单的导航视图,带有指向不同视图的导航链接。当运行应用程序并按下导航链接时,它会将我带到新视图

然而,当我在模拟器或设备上时,“后退”按钮不起作用,而在预览上它可以正常工作


HomeView()
.tabItem {
Image(systemName: "house.fill")
Text("Home")
}
.onTapGesture {
self.selectedTab = 2
}
.tag(2)
                    
你知道问题出在哪里吗


import SwiftUI

struct HomeView: View {
    
    var body: some View {
        NavigationView {
            VStack {
                NavigationLink(destination: Text("Detail View")) {
                    Text("Hello World")
                }
            }
            .navigationBarTitle("SwiftUI")
        }
    }
}

struct HomeView_Previews: PreviewProvider {
    static var previews: some View {
        HomeView()
    }
}
我认为这个问题可能是因为HomeView是选项卡视图的一部分。下面的代码来自AppView.swift,这是运行应用程序时运行的代码(您可以在最底部看到该代码)

我认为这就是问题所在,因为当下面的代码被注释掉时,应用程序运行良好


HomeView()
.tabItem {
Image(systemName: "house.fill")
Text("Home")
}
.onTapGesture {
self.selectedTab = 2
}
.tag(2)
                    

从您的代码中,我可以看出问题出在
ontapsignature
,并且我从
self.selectedTab=2
中推测,您希望获得用户选择的选项卡

让我们用同样的概念重构一下代码

解决方案:删除
ontapsigner
,并将
添加到appear

    TabView {
        
        HomeView().tabItem {
                Image(systemName: "house.fill")
                Text("Home")
        }.onAppear{
            self.selectedTab = 2
        }.tag(2)
        
        AnotherView().tabItem {
                Image(systemName: "car.fill")
                Text("Login View")
        }.onAppear{
            self.selectedTab = 3
        }.tag(3)
        
    }

这样,每当视图出现时,就意味着用户已经选择了它,
onAppear
将被调用,并且变量
selectedTab
将被更改。我希望这能回答你的问题。

我试过你的代码,我觉得一切都很完美!尝试清理项目并重建。我清理了生成文件夹并重建了,但不幸的是问题仍然存在。是否尝试创建新项目?您使用的是哪个ios版本?我使用的是ios 14.2。当我创建一个新项目时,它会工作。你知道为什么会这样吗?我不想每次都创建新项目,尤其是随着项目的增长。如果你能将项目上传到github并发布链接,我会尝试弄清楚到底发生了什么。是的,我明白你的意思,在过去的几天里我在做一个项目,我看到swiftui是有线的,代码是正确的,但是我不断地出错,当我撤销更改时,我看到它工作,它是相同的代码loool,不要担心,只要创建新的项目并使用它,你就不会再面临问题了。