使用 Swift 在 Xcode 6 中使用 xib 在自定义 uiview 中获取 SIGABRT
Posted
技术标签:
【中文标题】使用 Swift 在 Xcode 6 中使用 xib 在自定义 uiview 中获取 SIGABRT【英文标题】:Getting SIGABRT in custom uiview using xib in Xcode 6 using Swift 【发布时间】: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)。
【问题讨论】:
【参考方案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/
【讨论】:
以上是关于使用 Swift 在 Xcode 6 中使用 xib 在自定义 uiview 中获取 SIGABRT的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Xcode 6.1 的 Swift 中使用 NSURL?
使用 swift 在 xcode 6 中自定义 NSValueTransformer
在 Xcode 6.3 (Swift) 中使用 Parse 和 Facebook 框架编译错误
使用 Swift 在 Xcode 6 中使用 xib 在自定义 uiview 中获取 SIGABRT