【问题标题】:Getting SIGABRT in custom uiview using xib in Xcode 6 using Swift使用 Swift 在 Xcode 6 中使用 xib 在自定义 uiview 中获取 SIGABRT
【发布时间】:2015-09-02 13:41:49
【问题描述】:

我按照一些在线教程创建了一个带有两个标签的自定义视图。我已将自定义 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)。

【问题讨论】:

    标签: ios xcode swift xcode6


    【解决方案1】:

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

    更改此功能:

    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/

    【讨论】:

      猜你喜欢
      • 2015-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-15
      • 2014-10-07
      • 1970-01-01
      • 1970-01-01
      • 2014-11-17
      相关资源
      最近更新 更多