TabView

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

Last updated