gpt4 book ai didi

objective-c - xib中基于嵌套 View 的NSTableViews

转载 作者:搜寻专家 更新时间:2023-10-30 19:57:47 24 4
gpt4 key购买 nike

我正在尝试将一个 NSTableView 嵌套在我的 xib 中另一个基于 View 的 tableview 中。当我这样做时,出现以下构建错误(尝试编译 xib 时):

对象 ID 为 jRp-dg-jOe 的 NSTableColumn 实例未使用 ID 为 y8a-qz-ChK 的对象归档其子项 (NSTableCellView)

有没有人见过这个,或者知道如何解决它?

我假设我可以为 NSTableCellView 创建另一个 xib,并使用它连接到父 NSTableView


NSNib *cellNib = [[NSNib alloc] initWithNibNamed:@"MyCellContainingAnNSTableView"bundle:nil];
[parentTable registerNib:cellNib forIdentifier:@"SomeIdentifier"];

但这有点烦人......

最佳答案

好吧,似乎没有人对此有任何解决方案......

经过长时间的观察,Interface Builder 似乎无法归档嵌套的 NSTableView。我的解决方案是创建一个包含 NSTableCellView 并从原始 NSTableView 引用它的新 .xib。方法如下:

  • 在单独的 .xib 中创建一个新的 NSTableCellView。将其命名为 SchemeCell.xib
  • 在您的代码中添加一个 NSTableViewDelegate,并将其设置为主(父)tableview 的委托(delegate)。
  • 在方法中添加:

    - (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];
    }

然后你走吧!现在这样做的主要缺点是您不能再使用 Interface Builder 将项目从 SchemeCell 连接到父 NSTableView(因为它们现在都在单独的 .xibs,但这不是世界末日,因为您当然可以在代码中完成所有这些操作。

关于objective-c - xib中基于嵌套 View 的NSTableViews,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20370730/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com