Кажется, что не работает атрибут IBTML. У меня есть простой вид каркаса с UILabel, который я создаю переменную IBInspectable «titleText». Я отмечаю, что проверяемые переменные «layer» работают так, как ожидалось, но не мой пользовательский «titleText», который должен обновить основное представление с использованием этой структуры.IBInspectable с Cocoa Touch Framework не работает? (код прилагается)
вопросы:
Interface Builder не обновляя titleLabel? (то есть во время разработки), то есть я ожидаю, что это должно быть так же, как и для элементов «слоя».
Во время выполнения значение titleLabel не подбирает значение, установленное в IB. Обратите внимание, что я получаю следующий вывод, когда я запускаю, т. Е. Мой код, который производит это, находит «self.titleLabel» на самом деле нуль?
КОД СУЩНОСТЬ
(б) gcCustomerView.swift
import UIKit
@IBDesignable
class gcCustomView: UIView {
@IBOutlet weak var titleLabel: UILabel!
@IBInspectable var titleText: String = "Default" {
didSet {
if self.titleLabel != nil {
self.titleLabel.text = titleText
} else {
NSLog("Could not set title text as label.text was nil : was trying to set to \(titleText)")
}
}
}
@IBInspectable var cornerRadius: CGFloat = 0 {
didSet {
layer.cornerRadius = cornerRadius
layer.masksToBounds = cornerRadius > 0
}
}
@IBInspectable var borderWidth: CGFloat = 0 {
didSet {
layer.borderWidth = borderWidth
}
}
@IBInspectable var borderColor: UIColor? {
didSet {
layer.borderColor = borderColor?.cgColor
}
}
override init(frame: CGRect) {
super.init(frame: frame)
commitInit()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
commitInit()
}
// Private
func commitInit() {
if self.subviews.count == 0 {
print("Loading Nib")
//let bundle = Bundle(forClass: self.dynamicType)
let bundle = Bundle(for: type(of: self))
let nib = UINib(nibName: "gcCustomView", bundle: bundle)
let view = nib.instantiate(withOwner: self, options: nil)[0] as! UIView
view.frame = bounds
view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
addSubview(view)
}
}
}
(с) Main.storyboard Снимок
большое спасибо - этот ответ выравнивает лучшее, где я поступил не так, и задокументировал, как исправить ситуацию – Greg