powing
(Albert)
1
I have a function that automatically creates buttons and inputs them into an array. However, the "FUNCTION1" button action is static and no matter the logic I implement I cannot make it execute different code.
So I thought that it would be possible to cast the buttons into a new class to ammend it with a new function i.e. "FUNCTION1" substituted for "FUNCTION2" without changing anything else, but I get the error "Property does not override any property from its superclass" and I can't use self.
//initialize vehicle buttons and append to array
func convertVehiclesToButtons(from vehicle: [Vehicles]) {
for car in vehicles {
let carButton: CarButton = {
let carButtonData = CarButton(imageNamed: "carImage", title: "", buttonAction: {
//FUNCTION 1
})
carButtonData.title = car.title
carButtonData.zPosition = 1
return carButtonData
}()
parkedCarButtons.append(carButton)
}
}
//convert car button to van button
func convertParkedCarButton(forButton carButton: CarButton) -> VanButton {
return carButton as! VanButton
}
class VanButton: CarButton {
override var carButton = {
CarButton(imageNamed: .self, title: "", buttonAction: {
//FUNCTION 2
})
}
}
powing
(Albert)
2
I found the problem to be calling one function. If I used the variables to set conditions, then I could use different functions as if they were different buttons, even though it was the same one.
Still, I couldn't figure out how to force cast the button and override the original buttonAction logic.