i morse såg jag en vacker tweet från @jesse_squires:

#Snabbtips: använd didSet på dina IBOutlets för att konfigurera vyer istället för att plugga in kod i viewDidLoad. Mycket renare. Kallas fortfarande bara en gång.

Inställningar färger, teckensnitt och tillgänglighet för gränssnittselement i appar har alltid ont. Helst skulle detta hända i storyboard, men färghantering i storyboard är ganska hemskt (ett sätt att mildra detta är genom en Xcode-färgpalett), och mer avancerade tillgänglighetsprodukter kan inte ens göras i storyboard.

så jag föredrar personligen att göra detta i Kod-mycket lättare att se var alla färger / teckensnitt / tillgänglighet / etc-ändringar måste göras när appen omformas. Jag ser ofta detta översatt till en super lång viewDidLoad som Jesse nämner, som jag försöker extrahera till en eller flera funktioner i privat förlängning i Swift så här:

Swift

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

importera UIKit
klass ViewController: UIViewController {
@Iboutlet svag var myLabel: UILabel!
@iboutlet svag var myOtherLabel: UILabel!
@iboutlet svag var myButton: UIButton!
åsidosätta func viewDidLoad () {
super.viewDidLoad()
// extrahera detta till en privat funktion
/ / för att hålla viewDidLoad kort
configureStyling()
}
}
// markera: UI Styling
privat förlängning ViewController {
func configureStyling () {
myLabel.textColor = UIColor.purpleColor ()
myOtherLabel.textColor = UIColor.gulfärg ()
myButton.tintColor = UIColor.magentaColor()
}
}

men jag älskar verkligen läsbarheten och enkelheten i Jesses lösning:

Swift

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

importera UIKit
klass ViewController: UIViewController {
@Iboutlet svag 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.viewDidLoad()
}
}

dags att refactor!

Lämna ett svar

Din e-postadress kommer inte publiceras.