【问题标题】:How to set the width of the view displayed as a row in a NSTableView?如何设置在 NSTableView 中显示为一行的视图宽度?
【发布时间】:2013-05-14 20:05:23
【问题描述】:

我有一个基于视图的NSTableView

我创建了一个NSView 以将NSTableView 作为一行插入。 在定义NSViewxib中,后者的宽度设置为280

当我将我的NSView 添加到我的NSTableView 时,前者的宽度更改为等于NSTableView 的宽度。

有没有防止这种行为的好方法? 我曾想过将我的NSView 包含在另一个中,但我觉得它有点hacky。

如果可能,我想要一个只涉及NSTableView 设置的解决方案。这个NSTableView 确实要填充许多不同的NSViews。

【问题讨论】:

    标签: macos cocoa nstableview nsview autoresize


    【解决方案1】:

    正如我在对您之前的问题的评论中提到的那样。您想将自己的视图添加为 NSTableCellViews 的子视图。 NSTableCellView 将设置为表格的宽度,但您的子视图可以是您喜欢的任何宽度。

    【讨论】:

    • 我直接在NSTableView 中添加了视图。例如:我为第一个 row 返回了一个名为 myView1NSView。现在,我应该做NSTableCellView * returnCellView = [[NSTableCellView alloc] init] ; [returnCellView setFrame:[myView1 frame]] ; [returnCellView addSubview:myView1] ; 吗?它不工作。
    • 我想知道为什么这是NSTableCellView。通过返回 NSView 并添加约束,它可以工作。如果有可能添加任何视图,而之前没有设置约束,我会更喜欢。谢谢;)
    • 最后,我做到了NSTableCellView * returnCellView = [[NSTableCellView alloc] init] ; [returnCellView setFrame:[returnView frame]] ; [returnCellView addSubview:returnView] ; return returnCellView;并且成功了!
    【解决方案2】:

    这可能很幼稚,但是如果您在 TableView 的属性检查器中取消选中 自动调整子视图大小会发生什么?

    【讨论】:

    • 我做到了,但什么也没发生。最后,我做到了NSTableCellView * returnCellView = [[NSTableCellView alloc] init] ; [returnCellView setFrame:[returnView frame]] ; [returnCellView addSubview:returnView] ; return returnCellView;
    猜你喜欢
    • 2017-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-31
    • 1970-01-01
    • 2015-11-14
    • 1970-01-01
    相关资源
    最近更新 更多