我正在开发一个具有许多相似但不相同的视图的应用程序,每个视图都包含一个NSTableView。
我有一个基本视图控制器类,它实现了我所有视图控制器(AppViewController)的通用方法。它继承自NSViewController。
我有另一个继承自AppViewController的视图控制器基类(ListViewController)。它符合NSWindowDelegate,NSTableViewDataSource和NSTableViewDelegate,并实现了我的列表视图中常见的所有方法。
ListViewController为表视图定义了一个IBOutlet。
@IBOutlet weak var tableView: NSTableView!
这个插座尚未连接到故事板。
我正在研究一个ListViewController的子类,它实现了一个案例的细节。
子类为实际的表视图定义了自己的IBOutlet。此IBOutlet 连接到故事板。
此类的viewDidLoad()方法尝试使用该值设置ListViewController中定义的IBOutlet。
class Clv: ListViewController<CustomerMaster>
{
@IBOutlet weak var customersTableView: NSTableView!
override func viewDidLoad()
{
tableView = customersTableView
super.viewDidLoad()
}
}
编译得很好,但在运行时失败:
017-08-29 08:16: 44.602374-0700库存[6910:156206640]未知类 接口生成器文件中的_TtC9Inventory3Clv在路径/.../ DerivedData / Inventory-begbsguxpczpiebmygowechkthaw / Build / Products / Debug / Inventory.app / Contents / Resources / Base.lproj / Main.storyboardc / CustomerListWindowController.nib。
2017-08-29 08:16: 44.803674-0700库存[6910:156206640]失败 从(NSViewController)连接到(clientsTableView)插座 (NSTableView):缺少setter或实例变量
我怀疑我的方法相当幼稚,但无法通过各种搜索找到另一种方法。
我注意到的另一个奇怪之处在于,当我尝试在故事板上为视图控制器指定类时,我的Clv类不在列表中。这可能与连接错误失败有关。
TIA。
其他信息:
class AppViewController: NSViewController { ... }
class ListViewController<Model: RestModel>: AppViewController,
NSWindowDelegate,
NSTableViewDataSource,
NSTableViewDelegate { ... }
RestModel是一种协议。