Birden çok view arasında geçiş yapabilmemizi sağlayan bileşendir.
// Tab geçişlerinin gerçekleştiğini gözlemlemek için
// bir dummy view oluşturalım.
struct SampleTabView: View {
let title: String
var body: some View {
Text(title)
}
}
struct TabContainerView: View {
var body: some View {
TabView {
SampleTabView(title: "Tab - 1")
.tabItem {
Image(systemName: "1.circle.fill")
Text("Tab-1").bold()
}
SampleTabView(title: "Tab - 2")
.tabItem {
Image(systemName: "2.circle.fill")
Text("Tab-2").bold()
}
SampleTabView(title: "Tab - 3")
.tabItem {
Image(systemName: "3.circle.fill")
Text("Tab-3").bold()
}
}
}
}
tabItem düzenleyicisini kullandığımızda Image ve Text bileşenlerini bizim için otomatik olarak yerleştirir.
Ekstra
Sekmeler (Tab (View)) arasında @EnvironmentObject kullanarak veri paylaşımı yapabiliriz.
// Demo için bir dummy class oluşturalım.
class User: Identifiable, Codable {
var id = UUID()
var name = ""
}
// EnvironmentObject
class UserService: ObservableObject {
@Published var users: [User]
init () {
self.users = []
}
}
struct TabContainerView: View {
var userService = UserService()
var body some: View {
SampleTabView { .. }
.environmentObject(userService)
// Paylaşmak istediğimiz veriyi
// Bu senaryoda UserService, bu şekilde environmentObject'e
// argüman olarak geçiyoruz.
}
}
// Tab View
struct SampleTabView: View {
@EnvironmentObject var userService: UserService
// Tab View içinde de bu şekilde, referans olarak geçtiğimiz
// UserService'e tekrar erişebiliriz.
var body: some View { .. }
}
@EnvironmentObject kullandığımız zaman SwiftUI, View oluşturulduğunda bu o objenin de hazır olduğuna emin oluyor