在 Swift 中打开更多导航选项卡

Open More Navigation Tab in Swift

我有一个 UIHostingController,其中包含我的 SwiftUI View。我想 return 从 UIHostingController.

转到更多选项卡

我试过打电话

dismiss(animated: true, completion: nil)

这是行不通的。我尝试更改选项卡栏的选择,但这当然不会转到更多选项卡。

self.tabBarController!.selectedIndex = 5

我想有一个简单的功能可以让它在我的视野中弹出,但我找不到它。

编辑: 为了进一步解释,我有一个包含多个 ViewControllers 的故事板。一个是UIHostingController。也许这个细节并不重要,我正在尝试用 Swift 从 ViewController 打开 'more' 项的列表。 UIHostingController 虽然使用自定义导航,因此默认后退按钮不相关。

更新: 我找到的最接近的代码是:

 self.tabBarController?.selectedViewController = tabBarController?.moreNavigationController

然而,这似乎并没有起作用,而是通过调用下面的代码。我能够闪烁显示 moreViewController。

self.tabBarController?.selectedViewController = tabBarController?.moreNavigationController.popViewController(animated: true)

我不知道你是如何实现 tabView 但在 SwiftUI 中,样板代码如下所示:

struct ContentView: View {

@State private var selection = 0

var body: some View {
    TabView(selection: $selection){
        Text("First View")
            .font(.title)
            .tabItem {
                VStack {
                    Image("first")
                    Text("First")
                }
            }
            .tag(0)
        Text("Second View")
            .font(.title)
            .tabItem {
                VStack {
                    Image("second")
                    Text("Second")
                }
            }
            .tag(1)
    }
}
}

struct ContentView_Previews: PreviewProvider {
static var previews: some View {
    ContentView()
 }
}

在这里你可以看到selection是0,如果你把它改成1它会在你打开视图时转到第二个标签。希望这有帮助

终于发现了。这就是您 return 到 more 控制器的方式,它只是根视图。

 self.navigationController?.popToRootViewController(animated: true)