来自外部Nib的基于视图的NSTableView,未初始化子视图

时间:2013-02-10 23:33:23

标签: objective-c macos nstableview

我尝试在OS X上了解基于视图的NSTableViews。

我的问题是,在加载的视图单元格(NSView子类)中,当我尝试在我的委托中分配值时,不会初始化子视图。

此时显示正确的计数和正确的视图,但我无法访问子视图以指定正确的值。

到目前为止我做了什么:

  • 使用Interface Builder中的自定义视图单元格创建了xib。
  • 为单元格创建自定义类并在IB中分配。

这项工作正常,我可以在调试器中看到属性。正确的课程 并且属性是连接到正确字段的IBOulets。

我可以看到致电:

- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row

在我的NSViewController中:awakeFromNib我这样做:

// Make my view controller the delegate
_applicationTableView.delegate = self;
// set the correct datasource
_applicationTableView.dataSource = [NWDataHolder sharedInstance];
// register the nib with the custom cell
[_applicationTableView registerNib:cellNib forIdentifier:@"ApplicationListViewCell"];

- (NSView *)tableView:viewForTableColumn:row:我做:

NWApplicationListViewCell *cell = [_applicationTableView makeViewWithIdentifier:@"ApplicationListViewCell" owner:self];

返回正确的类和单元格,我可以访问属性。 问题是,子视图未初始化,属性为nil且无法设置新值:

Log(@"Application Name Label %@", cell.applicationNameLabel); => nil

我已经看到了一些提示,即子视图是懒惰地初始化的,但我找不到一种方法来进行初始化。

有什么建议我做错了吗?

谢谢, 奥利弗

1 个答案:

答案 0 :(得分:1)

修正了问题。但我不明白为什么会发生这种情况。

我将IB中的字段连接到文件所有者,但不连接到我的ApplicationViewCell。 将物业接线后,一切正常。