Я пытаюсь добавить панель навигации в свое приложение SwiftUI, используя TabView следующим образом:
import SwiftUI
struct ContentView: View {
@State var isLoggedIn: Bool = false
var body: some View {
NavigationView{
if isLoggedIn {
LogInPage()
} else {
TabView{
HomeScreen()
.tabItem {
Image(systemName: "house")
Text("Hem")
}
BookingsScreen()
.tabItem {
Image(systemName: "book")
Text("Bokningar")
}
ProfileScreen()
.tabItem {
Image(systemName: "person")
Text("Profil")
}
}
}
}
}
}
Но я получаю два дубликата значка «дом» и текста «Дом» под ним, а также еще один значок с тремя точками и текст «Еще» под ним, буквально из ниоткуда, поскольку я даже не упомянул ничего другого. затем дом, книга и человек. И когда я нажимаю на него (три точки), он показывает список «person.fill» с текстом «Профиль» рядом с ним. Вот изображение того, как выглядит мой TabView и когда я нажимаю на три точки:
Вы имеете в виду замену моих Text() и Image() на Label?. Тогда нет, это не помогает.





Оберните дублирующиеся представления в VStack.
TabView{
VStack{
HomeScreen()
}
.tabItem {
Image(systemName: "house")
Text("Hem")
}
BookingsScreen()
.tabItem {
Image(systemName: "book")
Text("Bokningar")
}
VStack {
ProfileScreen()
}
.tabItem {
Image(systemName: "person")
Text("Profil")
}
}
Это еще больше испортит мой макет. Обернув его в стек, я вообще больше не вижу панели навигации. @lorem ипсум
@AranAli TabView всегда должен быть сверху. Это ошибка, если она находится внутри NavigationStack/View. Для каждой вкладки нужна своя, они должны быть взаимоисключающими. Это согласно HIG.
Извините, да, вы правы. Обертывание его внутри VStack действительно решает мою проблему. Глупый я, который сначала тебя неправильно понял...
Поможет ли это создать
Labelвнутри.tabItemзамыкания?