- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
代码:
class HeaderView: UIView {
@IBOutlet weak var titleLabel: UILabel!
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
finishInit()
}
func finishInit() {
titleLabel.backgroundColor = UIColor.white
}
func setView(withTitle title: String?) {
titleLabel.backgroundColor = UIColor.white
titleLabel.text = title
}
崩溃:
在 finishInit() 方法中,同时设置标签背景色
fatal error: unexpectedly found nil while unwrapping an Optional value
但同样,在 setView() 方法上,不会崩溃。
最佳答案
当 init
方法运行并返回时, socket 的连接尚未建立。因此 socket 仍然是 nil
并且您在使用它时会崩溃。
您应该能够通过在 titleLabel
之后添加一个问号 (?) 来对此进行测试,从而再次将其视为可选项。
titleLabel?.backgroundColor = UIColor.white
那么你不会崩溃,但如果标签仍然为零,该行当然也不会做任何事情。
所以你需要稍后调用使用 socket 的代码(你似乎正在用 setView
做?
您可以在应设置 socket 的地方使用 awakeFromNib
。
关于ios - 自定义 View - 在 "required init?(coder aDecoder: NSCoder)"方法中崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47246806/
我正在制作一个用于存档书籍的应用程序,我正准备连接一个按钮来保存数据,但我无法通过初始化。 这是 Xcode 给我的错误: Property 'self.bookStore' not initiali
我正在尝试使用以下方式推送 View Controller : var vc2 = ViewController2() self.navigationController?.pushViewContr
我编写了自己的 Button、Textfield、...、类。在“自定义类”的 Storyboard中,我将类设置为 UIElement。这非常有效。 现在我需要一个以编程方式添加的工具栏。当我在我的
也许只有我一个人,但我发现 swift 的某些方面……至少可以说是迟钝。 我大部分时间不使用 Interface Builder,因为我喜欢使用 PureLayout。所以我希望制作一个 UIView
我不认为 public init?(coder aDecoder: NSCoder) 中的问号是关于可选项的。此外,当我覆盖它时,我发现我根本不需要写问号。 那么这到底是什么意思呢? ---更新---
我正在尝试在 viewController 中添加 subview 。为了执行此操作,我创建了一个 xib 文件和关联的类。关联类的代码如下: import UIKit @IBDesignable c
我正在 Swift 中实现一个 Circle 类(UIView 的子类),它根据框架在其初始化程序中设置其 radius像这样传入 init(frame: CGRect): override init
我构建了一个自定义 View 类,它是 UIView 的子类。 此 View 通过 ViewController 中的 nib 文件加载: [[NSBundle main] loadNibNamed:
我不能完全理解我做错了什么。我尝试删除可选 (?) 但没有结果。 这是我的自定义 View 的总代码:- class CustomView: UIView { var vieww: UIVie
简介 我正在尝试调试我的程序,但遇到了一个问题。我收到快速错误:Unexpectedly found nil while unwrapping an optional value. 此问题来自隐式展开
我的 View Controller 中有以下内容: required init(coder aDecoder: NSCoder) { selectedFocusAreas = Array()
我正在尝试在 Swift 中子类化 UITableViewCell。 我已经试过了: class CUISwitchTableViewCell: UITableViewCell { var l
初始化 UIButton 使其在 super.init 行测试中停止。单击继续按钮运行没有问题。为什么 ?我如何才能看到停在那里的原因? required init?(coder aDecoder:
错误是使用 NSCoder 和 NSKeyArchiver 时应用崩溃。 我最近发表了一篇关于 NSCoder 的文章,但从那以后我更改了我的代码并遇到了一个新错误,因此我决定最好还是写一篇新文章。
我有一个核心数据实体Person具有可变形属性 age类型 Age . final class Person: NSManagedObject { @NSManaged public file
我有一个 ViewController,它需要用 ViewModel: NSObject 初始化。 我对 ViewController 的实现是: class ViewController: UIVi
代码: class HeaderView: UIView { @IBOutlet weak var titleLabel: UILabel! required init?(coder aDecoder
当我使用存储属性创建 UIView 或 UIViewController 的子类时,除非我包含 required init 的实现,否则 Xcode 不会编译我的项目?(编码器 aDecoder: N
我知道在反序列化我的对象(在 Storyboard 上创建的)时使用“required init?(coder aDecoder: NSCoder)”,但是在其中初始化 IBOutlets 是否正确?
我是一名优秀的程序员,十分优秀!