当NSTableview第二次加载其自定义单元子视图时,它的位置如何解决

时间:2015-03-20 07:18:14

标签: objective-c macos cocoa nstableview nstableviewcell

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

我正在创建NSWindowViewController,并且我将NSTableview与Customcell一起使用。在customeCell中,我使用了NSView(customView)和所有Cell IBOutlet放在了侧面NSView中。当第一次NSWindowViewController加载显示正常但关闭窗口后再次打开它。它的NSTextField IBOutlet将其位置从顶部到底部更改。

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

enter image description here

1 个答案:

答案 0 :(得分:0)

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

enter image description here

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

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

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

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

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

- (void)drawRect:(NSRect)dirtyRect {


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

    [super drawRect:dirtyRect];

    // Drawing code here.
}

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