Я делаю демонстрацию, чтобы узнать, как работает @IBInspectable.
Во-первых, я сделал две переменные в подклассе UIViewController:
@IBInspectable var intTest:Int = 10
@IBInspectable var flag:Bool = false
Чтобы он появился в раскадровке. После этого я изменяю значение этих переменных в раскадровке:
Затем я пытаюсь напечатать эти переменные в методе «viewDidLoad()» следующим образом:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
print("intTest value: \(String(describing: intTest))")
print("flag value: \(String(describing: flag)))")
}
Результат:
значение intTest: 90
значение флага: правда
Он отлично работает, за исключением случаев, когда я изменяю объявление переменных, например,
@IBInspectable var intTest:Int? = 10
@IBInspectable var flag:Bool? = false
После этого я изменил значение так же, как указано выше в раскадровке, но значения не изменились.
Выход:
Значение intTest: необязательно (10)
значение флага: необязательно (ложь)
Итак, мой вопрос: почему значение не обновляется, когда я объявляю переменную необязательной?
Другое дело, когда я беру переменную в виде строки, значение обновляется. Может ли кто-нибудь помочь мне понять эту функцию?