在Xcode 6中使用Swift使用xib在自定义uiview中获取SIGABRT



我按照一些在线教程创建了一个带有两个标签的自定义视图。我已经将自定义xib连接到具有两个标签输出的swift类文件。当我从需要呈现视图的视图控制器初始化视图时,我在

行上得到SIGABRT错误

let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView

自定义视图类的代码如下:
import UIKit
@IBDesignable class LevelButton: UIView {
    @IBOutlet weak var levelLabel: UILabel!
    @IBOutlet weak var score: UILabel!
    var view:UIView!
    var levelLabelText:String?
    {
            get
            {
                return levelLabel.text
        }
        set(levelLabelText)
        {
            levelLabel.text = levelLabelText
        }
    }
    var scoreText:String?
        {
        get{
            return score.text
        }
        set(scoreText)
        {
            score.text = scoreText
        }
    }
    override init(frame: CGRect) {
        super.init(frame: frame)
        setup()
    }
    required init(coder aDecoder:NSCoder)
    {
        super.init(coder: aDecoder)
        setup()
    }
    func setup()
    {
        view = loadViewFromNib()
        view.frame = bounds
        view.autoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight
        addSubview(view)
    }
    func loadViewFromNib() -> UIView
    {
        let bundle = NSBundle(forClass: self.dynamicType)
        let nib = UINib(nibName: "LevelButton", bundle: bundle)
        let view = nib.instantiateWithOwner(nil, options: nil)[0] as! UIView
        return view
    }
}

在主故事板中,我添加了一个视图,并使用上面的代码将它的自定义类设置为类,但是它没有显示任何东西,并且给出了一个SIGABRT错误。

我想不出解决办法。请建议(仅Swift)

这可能是你的问题的解决方案:

修改此函数:

func setup()
{
    view = loadViewFromNib()
    view.frame = bounds
    view.autoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight
    addSubview(view)
}

:

func setup() {
    if self.subviews.count == 0 {
        view = loadViewFromNib()
        view.frame = bounds
        view.autoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight
        addSubview(view)
    }
}

来源:http://blog.boxuanzhang.me/custom-reusable-uiview-with-xib/

最新更新