0

我有一个UIHostingController包含我的 SwiftUI View。我想从UIHostingController.

我试着打电话

dismiss(animated: true, completion: nil)

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

self.tabBarController!.selectedIndex = 5

我认为有一个简单的功能可以让它在我的视图中弹出,我只是找不到它。

编辑:为了进一步解释,我有一个带有几个ViewControllers. 一个是一个UIHostingController。也许这个细节并不重要,我正在尝试ViewController使用 Swift 打开“更多”项目的列表。虽然UIHostingController使用自定义导航,所以默认的后退按钮不相关。

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

 self.tabBarController?.selectedViewController = tabBarController?.moreNavigationController

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

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

2 回答 2

0

我不知道您是如何实现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()
 }
}

在这里您可以看到选择为 0,如果将其更改为 1,它将在您打开视图时转到第二个选项卡。希望这有帮助

于 2020-06-13T16:19:38.383 回答
0

终于发现了。这就是您返回更多控制器的方式,它只是根视图。

 self.navigationController?.popToRootViewController(animated: true)
于 2020-07-17T16:11:48.593 回答