Merhabalar bu yazımda SwiftUI ile birlikte yarattığımız sınıflara nesne gönderirken AnyView cast etme işlemine gerek kalmadan göndermeyi göstereceğim.
Örneğin Row View sınıfına parametre olarak bir Image, View, Field vs. nesnesi göndermek istediğimiz zaman AnyView cast edip gönderiyoruz. Bu işlemi ortadan kaldırmak ve direkt olarak nesneyi göndermek oldukça kolay.
struct ContentView: View { var body: some View { VStack(spacing: 20) { ListRowNonAvoid(title: "Item", accessoryView: AnyView(Image(systemName: "globe").resizable().frame(width: 24, height: 24))) .padding() Spacer() } } }
Yukardaki gibi kullanım hem okunaksız hemde gereksiz.
struct ListRow<Item: View>: View { var title: String var accessoryView: Item var body: some View { HStack(spacing: 10) { accessoryView Text(title) .font(.headline) Spacer() } } }
Yukardaki gibi generic type constraints yapısı uyguladığımız zaman direk olarak nesneyi inject edebiliyoruz.
struct ContentView: View { var body: some View { VStack(spacing: 20) { ListRow(title: "Item", accessoryView: Image(systemName: "globe").resizable().frame(width: 24, height: 24)) .padding() Spacer() } } }
İlk Yorumu Siz Yapın