2016-03-29 36 views
6

Voglio sottoclasse UIButton e aggiungere ad esso una proprietà isActive, che è un Bool che modifica l'aspetto del pulsante (questo non è correlato alla proprietà predefinita .enabled).Come sovrascrivere l'init di UIButton con il tipo di pulsante in Swift?

Tuttavia, desidero anche impostare il tipo di pulsante quando inizializzato. In particolare, voglio inizializzare molto come è in UIButton, come:

let button = MyButton(type: .Custom) 

Tuttavia, poiché la .buttonType è una sola lettura, non posso semplicemente ignorare le cose come:

convenience init(type buttonType: UIButtonType) { 
    buttonType = buttonType 
    self.init() 
} 

Questa spiedi un errore: Cannot assign to value: 'buttonType' is a 'let' constant (ho già implementato lo init(coder:) richiesto).

Quindi, come è possibile impostare .buttonType quando inizializzato?


NOTA: La proprietà personalizzata deve essere utilizzato anche in altre funzioni per cambiare la logica all'interno di esso, così ho preso una proprietà, invece di definire due funzioni per modificare l'aspetto.

+0

'ButtonType = buttonType' Ha senso in rapida? – Fonix

+0

Prova 'self.buttonType = buttonType' – Chris

+0

@Chris Ha ottenuto lo stesso risultato. – Blaszard

risposta

-8

ButtonType è di sola lettura, in modo da avere per impostare il tipo di via inizializzatore convenienza del UIButton:

convenience init(type buttonType: UIButtonType) { 
    self.init(type: buttonType) 
    // assign your custom property 
} 
+0

No. Ciclo senza fine. –