în această dimineață am văzut un tweet frumos de la @ jesse_squires:

#sfat Swift: utilizați didSet pe IBOutlets pentru a configura vizualizări în loc de cramming cod în viewDidLoad. Mult mai curat. Încă sunat doar o singură dată.

— Jesse Squires (@jesse_squires) iulie 29, 2015

Setări culori, fonturi, și accesibilitate pentru elemente UI în aplicații este întotdeauna în durere. În mod ideal, acest lucru s-ar întâmpla în storyboard, dar gestionarea culorilor în storyboard este destul de oribilă (o modalitate de a atenua acest lucru este printr-o paletă de culori Xcode), iar lucrurile de accesibilitate mai avansate nu pot fi făcute nici măcar în storyboard.

Deci, eu personal prefer să fac acest lucru în cod – mult mai ușor pentru a vedea în cazul în care toate culorile / font / accesibilitate / etc modificările trebuie să fie făcute atunci când aplicația este re-proiectat. Văd de multe ori acest lucru tradus într – o viewDidLoad super-lung ca Jesse menționează, pe care încerc să extragă într – una sau mai multe funcții în extensie privată în Swift ca aceasta:

rapid

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

import UIKit
clasa ViewController: UIViewController {
@IBOutlet slab var myLabel: UILabel!
@IBOutlet slab var myOtherLabel: UILabel!
@IBOutlet slab var mybutton: UIButton!
suprascrie func viewDidLoad() {
super.vizualizaredidload()
// extrageți acest lucru într-o funcție privată
/ / pentru a menține viewDidLoad scurt
configureStyling()
}
}
// MARK: UI Styling
extensie privată ViewController {
func configureStyling() {
myLabel.textColor = UIColor . purpleColor ()
myOtherLabel.textColor = UIColor . yellowColor ()
myButton.tintColor = UIColor.magentaColor()
}
}

dar îmi place foarte mult lizibilitatea și simplitatea soluției lui Jesse:

rapid

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

import UIKit
clasa ViewController: UIViewController {
@IBOutlet slab var myLabel: UILabel! {
didSet {
myLabel.textColor = UIColor.purpleColor()
}
}
@IBOutlet weak var myOtherLabel: UILabel! {
didSet {
myOtherLabel.textColor = UIColor.yellowColor()
}
}
@IBOutlet weak var myButton: UIButton! {
didSet {
myButton.tintColor = UIColor.magentaColor()
}
}
override func viewDidLoad() {
super.vizualizaredidload()
}
}

e timpul să refactor!

Lasă un răspuns

Adresa ta de email nu va fi publicată.