jus*_* k. 8 cocoa interface-builder xib nstableview nib
我有一个类似的问题可可-基于视图的NSTableView的,使用在多个表中一个单元,通过放大
苹果自己的文档进行makeViewWithIdentifier:owner:
"通常,标识符与Interface Builder中的外部NIB相关联,表视图将自动使用提供的所有者实例化NIB."
这似乎意味着你应该能够NSTableCellView将nib 存储在包含nib的单独nib中NSTableView.然而,在我的实验中,我只能获得包含在tableview中的单元格,我正在调用它.即,如果我将我的单元格剪切并粘贴到新的.xib文件中,则tableview将无法再找到它.我做错了什么,或者这实际上是不可能的,我在某种程度上误读了Apple的文档?
使用- (void)registerNib:(NSNib *)nib forIdentifier:(NSString *)identifier注册到与小区标识符一起使用的笔尖.
如果它不起作用,你可能在加载tableView数据后注册了nib.使用[tableView reloadData]后记以确保它不是时间问题.
我刚刚遇到这个问题,我认为当您使用专用 Nib 填充基于视图的表时,您不能使用makeViewWithIdentifier:owner: 。
该问题与文件所有者(即视图控制器)有关。makeViewWithIdentifier:owner:似乎旨在与“self”一起用作简单自定义视图的所有者。
一般来说,如果您有一个单独的笔尖用于带有插座的自定义视图,那么您也需要一个单独的视图控制器。否则,如果您的自定义视图有一个出口,并且表显示许多自定义视图,那么您从“自身”表视图所有者那里引用哪个出口?
因此,在我的测试中,我将 AppDelegate 作为表视图的委托/数据源。我有一个CellView.xib和CellViewController.h/.m,带有接口的出口。然后在我的tableView:viewForTableColumn:row:委托方法中我有以下代码:
SSCellViewController *vc = [[SSCellViewController alloc] initWithNibName:@"CellView" bundle:nil];
return vc.view;
Run Code Online (Sandbox Code Playgroud)
您失去的是使用 makeViewWithIdentifier:owner: 自动发生的单元格重用。要自己实现这一点,您可能还需要管理您创建的许多视图控制器。
我可能仍然遗漏了一些东西,因为我在多年只从事 iOS 工作后即将转向 OS X 开发。