NSTableview Load第二次它的customcell Subview的改变它的位置如何解决

When NSTableview Load second time its customcell Subview's change it's position how to solve

我是 cocoa OSX 应用程序的新手可能这个问题很简单,但我尽力找出这个问题,最后我在这里提问。

我正在创建 NSWindowViewController 并在其中使用 NSTableview 和 Customcell。在 customeCell 中,我使用了 NSView (customView),所有 Cell IBOutlet 都放在 NSView 中。当第一次 NSWindowViewController 加载时显示正常但在关闭 window 后我再次打开它。它的 NSTextField IBOutlet 将其位置从单元格的顶部更改为底部。

我试图找到一些 属性 更改但没有修复它我附上了它的屏幕示例我的 cocoa osx 应用程序发生了什么。

我注意到当我使用以下代码从 属性 Inspector 设置 NSView 的背景颜色时会发生这种情况,我设置 NSView 核心动画。

并在 viewForTableColumn 中设置背景颜色,例如:

cellView.bgview.layer.backgroundColor = [NSColor whiteColor].CGColor;

颜色设置正确,当我重新加载时一切正常 table 查看顶部标签到底部并且将显示反转 UI 我在问题中显示的单元格顺序。

我测试了如果我删除 NSView 设置背景颜色代码,就像我上面提到的那样,然后工作完美,没有重新订购和所有事情。我没有使用自动布局。

所以之后我创建了 NSview 的自定义子类来设置颜色,如下所示:

- (void)drawRect:(NSRect)dirtyRect {


    [[NSColor whiteColor] setFill];
    NSRectFill(dirtyRect);

    [super drawRect:dirtyRect];

    // Drawing code here.
}

我删除了我的旧代码,并通过创建 NSView 子类和我的问题修复来使用这个代码来设置背景。