Post

Replies

Boosts

Views

Activity

Reply to Customizing Swipe to Delete Button
@DTS Engineer Hi, thanks allot I’ve already done it by implementing 2 views on top of each other and using the drag gesture. But now I’m facing new issue, this foreach list which is embedded in a Scroll View stopped responding to scrolling everything goes to the cells ? How to fix that ?
Topic: UI Frameworks SubTopic: SwiftUI
Jan ’25
Reply to Using Generic SwiftData Modules
@DTS Engineer I think the code below works, ill keep testing and update you, import SwiftUI import SwiftData struct SwiftUIView<T: PersistentModel>: View { @Bindable var dataModule: T var keyPath: KeyPath<T, String> var body: some View { HStack(alignment: .top) { Text(dataModule[keyPath: keyPath]) } } } #Preview { do { let configuration = ModelConfiguration(isStoredInMemoryOnly: true) let container = try ModelContainer(for: Patient.self, configurations: configuration) let example = Patient(firstName: "First Name", mobileNumber: "+974 1234 5678", homePhone: "+974 1234 5678", email: "firstname.lastname@gmail.com") return SwiftUIView(dataModule: example, keyPath: \.firstName) .modelContainer(container) } catch { fatalError("Fatal Error") } }
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Nov ’24
Reply to Using Generic SwiftData Modules
Ok now the solution you suggested raised few more questions and errors as below .. Now to use the T with text such as Text(T.age) it will complain that T doesn't have no age property ? Now suppose I want even the property of the T to be also generic and passed to the view as argument how we do it like T.T ? can I see an example ? Im trying to make a generic view that shows any property of any SwiftData module. Also #Preview is compiling that the generic variable isn't initialized and I wonder how can we initialize a generic variable ? I get the error .. Missing argument for parameter 'dataModule' in call import SwiftUI import SwiftData struct GenderList2<T: PersistentModel>: View { @Bindable var dataModule: T var body: some View { HStack(alignment: .top) { Text(T.age) } } } #Preview { GenderList2() }
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Nov ’24
Reply to SwipeAction in For Each
Hello @Claude31 , thanks for the replay, below is the full code .. import SwiftUI import SwiftData struct PatientsList: View { @Environment(\.modelContext) var modelContext @Query(sort: [SortDescriptor(\Patient.firstName), SortDescriptor(\Patient.birthday)]) var patients: [Patient] var body: some View { List { ForEach(patients) { patient in HStack { NavigationLink (value: patient) { PatientRow(patient: patient) } } .alignmentGuide(.listRowSeparatorLeading) { _ in -50 } .listRowSeparatorTint(sysSecondary02) .swipeActions(edge: .trailing) { Button(role: .destructive) { deletePatient(patient: patient) } label: { VStack { Label("Delete", systemImage: "trash") Image(systemName: "Trash") } } } } } .scrollIndicators(.hidden) .foregroundStyle(sysSecondary08) .listStyle(.plain) } func deletePatient(patient: Patient) { modelContext.delete(patient) } init(sort: SortDescriptor<Patient>, searchString: String) { _patients = Query(filter: #Predicate { if searchString.isEmpty { return true } else { return $0.firstName.localizedStandardContains(searchString) } }, sort: [sort]) } } #Preview { PatientsList(sort: SortDescriptor(\Patient.firstName), searchString: "") }
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Oct ’24
Reply to Customizing Swipe to Delete Button
@DTS Engineer Hi, thanks allot I’ve already done it by implementing 2 views on top of each other and using the drag gesture. But now I’m facing new issue, this foreach list which is embedded in a Scroll View stopped responding to scrolling everything goes to the cells ? How to fix that ?
Topic: UI Frameworks SubTopic: SwiftUI
Replies
Boosts
Views
Activity
Jan ’25
Reply to Using Generic SwiftData Modules
@DTS Engineer I think the code below works, ill keep testing and update you, import SwiftUI import SwiftData struct SwiftUIView<T: PersistentModel>: View { @Bindable var dataModule: T var keyPath: KeyPath<T, String> var body: some View { HStack(alignment: .top) { Text(dataModule[keyPath: keyPath]) } } } #Preview { do { let configuration = ModelConfiguration(isStoredInMemoryOnly: true) let container = try ModelContainer(for: Patient.self, configurations: configuration) let example = Patient(firstName: "First Name", mobileNumber: "+974 1234 5678", homePhone: "+974 1234 5678", email: "firstname.lastname@gmail.com") return SwiftUIView(dataModule: example, keyPath: \.firstName) .modelContainer(container) } catch { fatalError("Fatal Error") } }
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Replies
Boosts
Views
Activity
Nov ’24
Reply to Using Generic SwiftData Modules
Ok now the solution you suggested raised few more questions and errors as below .. Now to use the T with text such as Text(T.age) it will complain that T doesn't have no age property ? Now suppose I want even the property of the T to be also generic and passed to the view as argument how we do it like T.T ? can I see an example ? Im trying to make a generic view that shows any property of any SwiftData module. Also #Preview is compiling that the generic variable isn't initialized and I wonder how can we initialize a generic variable ? I get the error .. Missing argument for parameter 'dataModule' in call import SwiftUI import SwiftData struct GenderList2<T: PersistentModel>: View { @Bindable var dataModule: T var body: some View { HStack(alignment: .top) { Text(T.age) } } } #Preview { GenderList2() }
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Replies
Boosts
Views
Activity
Nov ’24
Reply to SwipeAction in For Each
Hello @Claude31 , thanks for the replay, below is the full code .. import SwiftUI import SwiftData struct PatientsList: View { @Environment(\.modelContext) var modelContext @Query(sort: [SortDescriptor(\Patient.firstName), SortDescriptor(\Patient.birthday)]) var patients: [Patient] var body: some View { List { ForEach(patients) { patient in HStack { NavigationLink (value: patient) { PatientRow(patient: patient) } } .alignmentGuide(.listRowSeparatorLeading) { _ in -50 } .listRowSeparatorTint(sysSecondary02) .swipeActions(edge: .trailing) { Button(role: .destructive) { deletePatient(patient: patient) } label: { VStack { Label("Delete", systemImage: "trash") Image(systemName: "Trash") } } } } } .scrollIndicators(.hidden) .foregroundStyle(sysSecondary08) .listStyle(.plain) } func deletePatient(patient: Patient) { modelContext.delete(patient) } init(sort: SortDescriptor<Patient>, searchString: String) { _patients = Query(filter: #Predicate { if searchString.isEmpty { return true } else { return $0.firstName.localizedStandardContains(searchString) } }, sort: [sort]) } } #Preview { PatientsList(sort: SortDescriptor(\Patient.firstName), searchString: "") }
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Replies
Boosts
Views
Activity
Oct ’24