繁体   English   中英

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

[英]view-based NSTableView from external Nib, Subviews are not initialized

我试着在OS X上绕过基于视图的NSTableViews。

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

目前显示正确的计数和正确的视图,但是我无法访问子视图以分配适当的值。

到目前为止,我所做的是:

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

这项工作正常,我可以在调试器中看到属性。 正确的类和属性是连接到正确字段的IBOulet。

我可以看到以下呼叫:

- (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

我已经看到一些暗示,子视图是懒惰地初始化的,但是我无法找到一种方法来进行热切的初始化。

有什么建议我做错了吗?

谢谢,奥利弗

解决了问题。 但是我不明白为什么这真的发生了。

我将IB中的字段连接到文件所有者,而不是我的ApplicationViewCell。 将属性连接到两个之后,一切正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM