我无法完全理解我做错了什么。我尝试删除可选(?)但没有结果。
以下是我的自定义视图的总代码: -
class CustomView: UIView {
var vieww: UIView!
override init(frame: CGRect) {
super.init(frame: frame)
setupView()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setupView()
}
func loadViewFromib () -> UIView {
let bundle = NSBundle(forClass: self.dynamicType)
let nib = UINib(nibName: NSStringFromClass(self.dynamicType).componentsSeparatedByString(".").last!, bundle: bundle)
let view = nib.instantiateWithOwner(self, options: nil).first as! UIView
return view
}
func setupView() {
vieww = loadViewFromib()
vieww.frame = CGRectMake(0, 0, 300, 150)
vieww.center = center
addSubview(vieww)
/// Adds a shadow to our view
vieww.layer.cornerRadius = 4.0
vieww.layer.shadowColor = UIColor.blackColor().CGColor
vieww.layer.shadowOpacity = 0.2
vieww.layer.shadowRadius = 4.0
vieww.layer.shadowOffset = CGSizeMake(0.0, 8.0)
}
我是swift的新手,不知道该怎么做。请帮帮我。
提前致谢。
答案 0 :(得分:2)
错误是由于无限循环引起的,也是由于我没有向CustomView提供任何帧。我在设定断点并逐步进行后找到了它。
这是解决方案(CustomView中的代码): -
override init(frame: CGRect) {
super.init(frame: frame)
setupView()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setupView()
}
func setupView() {
// do all your setup for your view here
}
在ViewController中 - >
lazy var popupView :CustomView = {
let popupView = CustomView(frame: CGRectMake(0,0,300,150))
return popupView
}()
这是来自堆栈溢出的链接,这清除了我的所有怀疑。
Fatal error: use of unimplemented initializer 'init(coder:)' for class
如果仍有人怀疑你可以参考http://www.edwardhuynh.com/blog/2015/02/16/swift-initializer-confusion/
。这个博客肯定会清除你所有的疑虑。
希望有人发现这些有用。