2017-08-05 88 views
0

这是我第一次使用自定义视图,而且我很困惑如何继续。在界面生成器中设计自定义视图

我有一个自定义视图,从NSView继承与它只有3件事:图像视图,以及2个文本字段:

// MyCustomView.swift 
import Cocoa 

@IBDesignable class MyCustomView: NSView { 
    @IBOutlet weak var imageView: NSImageView! 
    @IBOutlet weak var titleField: NSTextField! 
    @IBOutlet weak var subtitleField: NSTextField! 

    override func draw(_ dirtyRect: NSRect) { 
     super.draw(dirtyRect) 
    } 
} 

我加了一个XIB文件,设计视图和连接的所有网点:现在

MyCustomView.xib

我的主要情节串连图板我添加了一个通用的观点,改变它的类MyCustomView和连接的插座。下面的代码为ViewController.swift

// ViewController.swift 
import Cocoa 

class ViewController: NSViewController { 
    @IBOutlet weak var customView: MyCustomView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     customView.titleField.stringValue = "This is a title" 
    } 
} 

在运行时我就customeView.titleField.stringValue = ...行了一个致命的错误:

fatal error: unexpectedly found nil while unwrapping an Optional value 

如果我拿出那行,应用程序编译,但自定义视图是空白。

所以我想我的定制设计没有从MyCustomView.xib继续?我该如何纠正?我加倍检查,所有的网点都连接到IB。

+0

为什么你需要子类NSView时,事实上你可以通过连接视图控制器访问这些控件? –

+0

实际的自定义视图更复杂。这是一个简化的例子 – Jenny

+0

这不是这个问题的重复。我知道错误意味着什么,但我问如何设置我的视图和Interface Builder以避免错误。 – Jenny

回答

0
  1. 你的班级在UIView的Identity Inspector MyCustomView
  2. IBOutlet链接是否正确设置为MyCustomView? (您的故事板端)
  3. 是否将XIB的文件所有者设置为MyCustomView
  4. 您是否有MyCustomView的初始登台人? (覆盖初始化(帧:CGRect)或需要的初始化?(编码器aDecoder:NSCoder))
相关问题