Открыть дополнительную вкладку навигации в 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, он перейдет на вторую вкладку, когда вы откроете представление. Надеюсь на эту помощь