Pat*_*ick 3 macos cocoa objective-c nstableview
我正在尝试在我的xib中将一个NSTableView嵌套在另一个基于视图的tableview中.当我这样做时,我得到以下构建错误(当尝试编译xib时):
An instance of NSTableColumn with object ID jRp-dg-jOe did not archive its child (NSTableCellView) with an object of ID y8a-qz-ChK
有没有人看过这个,或者知道如何修复它?
我假设我可以为NSTableCellView创建另一个xib,并使用它将其连接到父NSTableView
NSNib *cellNib = [[NSNib alloc] initWithNibNamed:@"MyCellContainingAnNSTableView" bundle:nil];
[parentTable registerNib:cellNib forIdentifier:@"SomeIdentifier"];
但那有点烦人......
好吧所以似乎没人有任何解决方案......
经过很长一段时间的研究,似乎Interface Builder无法归档嵌套的NSTableViews.我的解决方案是创建一个新的.xib包含NSTableCellView和引用原始的NSTableView.这是怎么做的:
.xib.称之为SchemeCell.xibNSTableViewDelegate到您的代码,并将其设置为主(父)tableview的委托.添加方法:
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
NSNib *cellNib = [[NSNib alloc] initWithNibNamed:@"SchemeCell" bundle:nil];
[self.schemeTableView registerNib:cellNib forIdentifier:@"SchemeCell"];
});
return [self.schemeTableView makeViewWithIdentifier:@"SchemeCell" owner:self];
}
Run Code Online (Sandbox Code Playgroud)你走吧!现在主要的缺点是你不能再使用Interface Builder将项目连接SchemeCell到父项NSTableView(因为它们现在都是分开的.xibs,但它不是世界末日,因为你可以在其中完成所有这些代码当然.
| 归档时间: |
|
| 查看次数: |
900 次 |
| 最近记录: |