初始化自定义类 UIVIew
Posted
技术标签:
【中文标题】初始化自定义类 UIVIew【英文标题】:Init custom class 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
【问题讨论】:
你连接插座了吗? 【参考方案1】:根据您的 xib 的外观,可能存在两个问题:
要么您的插座未连接到 xib。
或者在初始化过程中插座不可用,所以你无法访问textView
,它仍然是nil
。那么正确的做法是重写awakeFromNib
方法并将addBehavior
放在那里。
【讨论】:
不知道 awakeFromNib 函数,每天都在学习。解决了! @user3722523 顺便说一句,整个addBehavior
设置,包括层的设置都可以在Interface Builder 中设置(在User Defined Runtime Attributes
下),但如果您的目标是重用,那么显然您的解决方案会更好.以上是关于初始化自定义类 UIVIew的主要内容,如果未能解决你的问题,请参考以下文章
UITapGestureRecognizer 不适用于自定义 UIView 类
有没有办法让自定义类在 UIView 上起作用,而无需在初始化时传递 ViewController(作为参考)?
如何将额外的参数传递给自定义UIView类以便在swift中进行初始化