【问题标题】:Init custom class UIVIew初始化自定义类 UIVIew
【发布时间】:2015-08-31 21:19:55
【问题描述】:

尝试使用 xib 文件初始化我的自定义类 UIVIew,但在尝试初始化属性时崩溃:

import Foundation
import UIKit

class ReportView: UIView {

@IBOutlet weak var textView: UITextView!

override init (frame : CGRect) {
    super.init(frame : frame)

}

convenience init () {
    self.init(frame:CGRectZero)
}

required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    addBehavior()
}

func addBehavior (){
    textView.layer.borderWidth = 1.0
    textView.layer.borderColor = UIColor(red: 170/255, green: 170/255, blue: 170/255, alpha: 0.5).CGColor
    textView.layer.opacity = 0.9
    textView.layer.cornerRadius = 3
    textView.clipsToBounds = true
}
}

在 textview 上崩溃:致命错误:在展开可选值时意外发现 nil

【问题讨论】:

  • 你连接插座了吗?

标签: ios swift uiview


【解决方案1】:

根据您的 xib 的外观,可能存在两个问题:

  1. 要么您的插座未连接到 xib。

  2. 或者在初始化过程中插座不可用,所以你无法访问textView,它仍然是nil。那么正确的做法是重写awakeFromNib 方法并将addBehavior 放在那里。

【讨论】:

  • 不知道 awakeFromNib 函数,每天都在学习。解决了!
  • @user3722523 顺便说一句,整个addBehavior 设置,包括层的设置都可以在Interface Builder 中设置(在User Defined Runtime Attributes 下),但如果您的目标是重用,那么显然您的解决方案会更好.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-16
  • 1970-01-01
  • 2020-06-26
  • 2017-04-26
  • 1970-01-01
相关资源
最近更新 更多