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 UIButton
Unterklasse mit einem benutzerdefinierten Initialisierer
Mit dieser Lösung können Sie Instanzen Ihrer UIButton
Unterklasse 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 UIButton
Unterklasse mit einem praktischen Initialisierer
Mit dieser Lösung können Sie Instanzen Ihrer UIButton
Unterklasse 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
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 UIButton
Unterklasse mit dem init(frame: CGRect)
Initialisierer
Mit dieser Lösung können Sie Instanzen Ihrer UIButton
Unterklasse 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 UIButton
Unterklasse mit dem init?(coder aDecoder: NSCoder)
Initialisierer
Mit dieser Lösung können Sie Instanzen Ihrer UIButton
Unterklasse 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 UIButton
Unterklasse mit init(frame: CGRect)
und init?(coder aDecoder: NSCoder)
Initialisierer
Mit dieser Lösung können Sie Instanzen Ihrer UIButton
Unterklasse 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 UIButton
Unterklasse 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 UIButton
Unterklasse 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
}
}