Mit Swift 3 können Sie je nach Bedarf eines der sieben folgenden Codefragmente auswählen , um Ihr Problem zu lösen.
1. Erstellen Sie Ihre UIButtonUnterklasse mit einem benutzerdefinierten Initialisierer
Mit dieser Lösung können Sie Instanzen Ihrer UIButtonUnterklasse mit dem entsprechenden Wert für Ihre Eigenschaft erstellen . Mit dieser Lösung können Sie Instanzen Ihrer UIButton-Unterklasse nur programmgesteuert erstellen.
import UIKit
class CustomButton: UIButton {
var myValue: Int
required init(value: Int = 0) {
self.myValue = value
super.init(frame: .zero)
backgroundColor = .red
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
Verwendung:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let button = CustomButton(value: 0)
button.setTitle("Hello", for: .normal)
button.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(button)
button.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
button.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
print(button.myValue)
}
}
2. Erstellen Sie Ihre UIButtonUnterklasse mit einem praktischen Initialisierer
Mit dieser Lösung können Sie Instanzen Ihrer UIButtonUnterklasse mit dem entsprechenden Wert für Ihre Eigenschaft erstellen . Mit dieser Lösung können Sie Instanzen Ihrer UIButtonUnterklasse nur programmgesteuert erstellen .
import UIKit
class CustomButton: UIButton {
var myValue: Int
convenience init(squareOf value: Int) {
self.init(value: value * value)
}
required init(value: Int = 0) {
self.myValue = value
super.init(frame: .zero)
backgroundColor = .red
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
Verwendung:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let button = CustomButton(squareOf: 10)
button.setTitle("Hello", for: .normal)
button.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(button)
button.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
button.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
print(button.myValue)
}
}
3. Erstellen Sie Ihre UIButtonUnterklasse mit dem init(frame: CGRect)Initialisierer
Mit dieser Lösung können Sie Instanzen Ihrer UIButtonUnterklasse nur programmgesteuert erstellen .
import UIKit
class CustomButton: UIButton {
var myValue: Int
override init(frame: CGRect) {
self.myValue = 0
super.init(frame: frame)
backgroundColor = .red
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
Verwendung:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let button = CustomButton(frame: .zero)
button.setTitle("Hello", for: .normal)
button.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(button)
button.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
button.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
print(button.myValue)
}
}
4. Erstellen Sie Ihre UIButtonUnterklasse mit dem init?(coder aDecoder: NSCoder)Initialisierer
Mit dieser Lösung können Sie Instanzen Ihrer UIButtonUnterklasse aus Storyboard erstellen .
import UIKit
class CustomButton: UIButton {
var myValue: Int
required init?(coder aDecoder: NSCoder) {
self.myValue = 0
super.init(coder: aDecoder)
backgroundColor = .red
}
}
Verwendung:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var button: CustomButton!
override func viewDidLoad() {
super.viewDidLoad()
print(button.myValue)
}
}
5. Erstellen Sie Ihre UIButtonUnterklasse mit init(frame: CGRect)und init?(coder aDecoder: NSCoder)Initialisierer
Mit dieser Lösung können Sie Instanzen Ihrer UIButtonUnterklasse programmgesteuert oder über Storyboard erstellen .
import UIKit
class CustomButton: UIButton {
var myValue: Int
override init(frame: CGRect) {
self.myValue = 0
super.init(frame: frame)
backgroundColor = .red
}
required init?(coder aDecoder: NSCoder) {
self.myValue = 0
super.init(coder: aDecoder)
backgroundColor = .red
}
}
6. Erstellen Sie Ihre UIButtonUnterklasse mit einem Standardeigenschaftswert für Ihre Eigenschaft
Alternativ zu den vorherigen Lösungen können Sie Ihrer Eigenschaft außerhalb der Initialisierer einen Anfangswert zuweisen.
import UIKit
class CustomButton: UIButton {
var myValue: Int = 0
override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = .red
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
backgroundColor = .red
}
}
7. Erstellen Sie Ihre UIButtonUnterklasse mit Ihrer Eigenschaft mit einem optionalen Typ
Wenn Sie beim Erstellen Ihrer Schaltfläche keinen Standardwert für Ihre Eigenschaft festlegen möchten / können, müssen Sie Ihren Eigenschaftstyp optional festlegen.
import UIKit
class CustomButton: UIButton {
var myValue: Int? = nil
override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = .red
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
backgroundColor = .red
}
}