Swift将文本分配给xib文件中的标签

Posted

技术标签:

【中文标题】Swift将文本分配给xib文件中的标签【英文标题】:Swift assign text to label in xib file 【发布时间】:2015-10-28 06:55:53 【问题描述】:

我的项目中有一个 CustomView.swift(UIView 的子类)连接到 CustomView.xib。

(注意:将xib类设置为CustomView但没有设置所有者)

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 写一个扩展并添加一个分配文本的函数吗?

【问题讨论】:

【参考方案1】:

你必须从 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)

【讨论】:

以上是关于Swift将文本分配给xib文件中的标签的主要内容,如果未能解决你的问题,请参考以下文章

初学者 Swift:尝试将文本分配给 UILabel [重复]

如何在javascript中将文本分配给标签?

Xib,标签文本更改

Swift 3 - 如何在 .xib 文件上为 UIScrollView 分配委托?

Swift 包中的 XIB 文件 - 忽略约束

如果我无法将 Future 函数分配给 onPressed 怎么办?