Swift 将文本分配给 xib 文件中的标签
Swift assign text to label in xib file
我有一个 CustomView.swift(UIView 的子 class)连接到我的项目中的 CustomView.xib。
(注:将xib class设置为CustomView但未设置owner)
加载CustomView.swift中的xib文件:
class CustomView: UIView {
@IBOutlet weak var label1: UILabel!
@IBOutlet weak var label2: UILabel!
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
override func drawRect(rect: CGRect) {
// Drawing code
}*/
override init(frame: CGRect) {
super.init(frame: frame)
let subView: UIView = loadViewFromNib()
subView.frame = self.bounds
//label1.text = "123" //would cause error
addSubview(subView)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
func loadViewFromNib() -> UIView {
let view: UIView = UINib(nibName: "CustomView", bundle: nil).instantiateWithOwner(nil, options: nil)[0] as! UIView
return view
}
}
我在某个地方制作了自定义视图:
let myCustomView:CustomView = CustomView.init(frame: CGRectMake(0, 0, 100, 100))
myCustomView.label1?.text = "123"
myCustomView.label2?.text = "abc"
print(myCustomView.label1.text)// returned nil
xib 标签上没有显示任何内容。
我应该为 CustomView.swift 写一个扩展并添加一个函数分配文本吗?
你必须从 Nib 加载
//let myCustomView:CustomView = CustomView.init(frame: CGRectMake(0, 0, 100, 100))
let myCustomView:CustomView = UINib(nibName: "CustomView", bundle: nil).instantiateWithOwner(nil, options: nil)[0] as! CustomView
myCustomView.label1?.text = "123"
myCustomView.label2?.text = "abc"
print(myCustomView.label1.text)
我有一个 CustomView.swift(UIView 的子 class)连接到我的项目中的 CustomView.xib。
(注:将xib class设置为CustomView但未设置owner)
加载CustomView.swift中的xib文件:
class CustomView: UIView {
@IBOutlet weak var label1: UILabel!
@IBOutlet weak var label2: UILabel!
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
override func drawRect(rect: CGRect) {
// Drawing code
}*/
override init(frame: CGRect) {
super.init(frame: frame)
let subView: UIView = loadViewFromNib()
subView.frame = self.bounds
//label1.text = "123" //would cause error
addSubview(subView)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
func loadViewFromNib() -> UIView {
let view: UIView = UINib(nibName: "CustomView", bundle: nil).instantiateWithOwner(nil, options: nil)[0] as! UIView
return view
}
}
我在某个地方制作了自定义视图:
let myCustomView:CustomView = CustomView.init(frame: CGRectMake(0, 0, 100, 100))
myCustomView.label1?.text = "123"
myCustomView.label2?.text = "abc"
print(myCustomView.label1.text)// returned nil
xib 标签上没有显示任何内容。
我应该为 CustomView.swift 写一个扩展并添加一个函数分配文本吗?
你必须从 Nib 加载
//let myCustomView:CustomView = CustomView.init(frame: CGRectMake(0, 0, 100, 100))
let myCustomView:CustomView = UINib(nibName: "CustomView", bundle: nil).instantiateWithOwner(nil, options: nil)[0] as! CustomView
myCustomView.label1?.text = "123"
myCustomView.label2?.text = "abc"
print(myCustomView.label1.text)