ios – UIPicker with a Custom class in SwiftUI


I have a Department struct on the User object as an optional field.

Department

struct Department: Identifiable, Codable {
    
    var id: Int
    var name: String?
    
    init(id: Int, name: String? = nil) {
        self.id = id
        self.name = name
    }
}

extension Department: Hashable {
    func hash(into hasher: inout Hasher) {
        hasher.combine(id)
    }
}

extension Department: Equatable {
    static func == (lhs: Department, rhs: Department) -> Bool {
        return lhs.id == rhs.id
    }
}

User

Mnimallist example, user has other fields but omitted for example.

User object with an optional field of the Department

struct User: Identifiable, Codable {
    
    var id: Int
    var department: Department?
    
    init(id: Int, department:Department? = nil) {
        self.id = id
        self.department = department
    }
    
}

extension User: Hashable {
    func hash(into hasher: inout Hasher) {
        hasher.combine(id)
    }
}

ViewModel

class ViewModel: ObservableObject {
     
    @Published var user: User = User(id: 0)
    
    @Published var departments: [Department] = [Department(id: 0, name: "--None Selected--")]

....

View

Picker(selection: $viewModel.user.department, label: Text("")) {
    ForEach(viewModel.departments, id: \.id) { department in
        Text(department.name ?? "").tag(department)
    }
}
.pickerStyle(WheelPickerStyle())
.padding()

Latest articles

spot_imgspot_img

Related articles

Leave a reply

Please enter your comment!
Please enter your name here

spot_imgspot_img