Открыть дополнительную вкладку навигации в Swift

У меня есть 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)

2 ответа

Решение

Наконец обнаружил. Вот как вы вернетесь к контроллеру more, который является просто корневым представлением.

 self.navigationController?.popToRootViewController(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()
 }
}

Здесь вы можете увидеть, что выбран 0, если вы измените его на 1, он перейдет на вторую вкладку, когда вы откроете представление. Надеюсь на эту помощь

Другие вопросы по тегам