dziś rano widziałem piękny tweet z @ jesse_squires:

#szybka Wskazówka: Użyj didSet na Iboutletach, aby skonfigurować widoki, zamiast wciskać kod do viewDidLoad. Dużo czystsze. Dzwonili tylko raz.

ustawienia kolory, czcionki i dostępność elementów interfejsu użytkownika w aplikacjach są zawsze bolesne. Idealnie byłoby tak w scenorysie, ale zarządzanie kolorami w scenorysie jest dość straszne (jednym ze sposobów na złagodzenie tego jest paleta kolorów Xcode), a bardziej zaawansowanych rzeczy związanych z dostępnością nie można nawet zrobić w scenorysie.

więc osobiście wolę to zrobić w kodzie-o wiele łatwiej zobaczyć, gdzie wszystkie kolory / czcionka / dostępność / itp zmiany muszą być wykonane, gdy aplikacja jest przeprojektowana. Często widzę to przetłumaczone na bardzo długi viewDidLoad, jak wspomina Jesse, który staram się wyodrębnić do jednej lub więcej funkcji w prywatnym rozszerzeniu W Swift jak to:

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

import UIKit
class ViewController: UIViewController {
@Iboutlet słaby var myLabel: UILabel!
@ IBOutlet słaby var myOtherLabel: UILabel!
@ IBOutlet słaby var myButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
// rozpakuj to do funkcji prywatnej
/ / aby viewDidLoad był krótki
configureStyling()
}
}
// MARK: Ui Styling
private extension ViewController {
func configureStyling() {
myLabel.textColor = UIColorpurpleColor()
myOtherLabel.textColor = UIColoryellowColor ()
myButton./ tintColor = UIColormagentaColor()
}
}

ale naprawdę uwielbiam czytelność i prostotę rozwiązania Jesse ’ ego:

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

import UIKit
class ViewController: UIViewController {
@Iboutlet słaby 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()
}
}

czas na refakturowanie!

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.