【问题标题】:How can I have the only column of my NSTableView take all the width of the TableView?如何让我的 NSTableView 的唯一列占据 TableView 的所有宽度?
【发布时间】:2011-11-24 14:53:27
【问题描述】:

我目前正在尝试学习一点 Cocoa(使用本书 Cocoa Programming for Mac OS X)。在其中一个练习中,我们设置了一个只有一列的 NSTableView,以充当事物的列表。

让我烦恼的是,在 Interface Builder 中,我找不到让(唯一)列始终占据 NSTableView 的整个宽度的方法。结果,它总是以某种方式看起来有 2 列,而实际上只有 1 列。

有什么想法吗?

【问题讨论】:

    标签: cocoa xcode4 interface-builder nstableview


    【解决方案1】:

    我不得不使用这两个步骤 - 山姆的回答 + 大卫道格拉斯的评论。

    [tableView  setColumnAutoresizingStyle:NSTableViewUniformColumnAutoresizingStyle];
    [tableColumn setResizingMask:NSTableColumnAutoresizingMask];
    
     //AND 
     [tableView sizeLastColumnToFit];
    

    【讨论】:

    • 在 OS 10.11 上的 XCode 7.1 上工作,也可以在 swift 上工作:
    【解决方案2】:

    这是我在 Xcode 4.6 中的做法...

    在 IB 中,选择表格视图并转到 Attributes Inspector。为“列大小”选择“统一”。然后,选择表格列并为“调整大小”选择“使用表格自动调整大小”。

    这些选项对应于:

    [tableView setColumnAutoresizingStyle:NSTableViewUniformColumnAutoresizingStyle];
    [tableColumn setResizingMask:NSTableColumnAutoresizingMask];
    

    【讨论】:

    • +1 我不知道接受的答案是否有效,但这个答案确实有效,而且对我来说似乎更合适。
    • 你也可以试试 [tableView sizeLastColumnToFit];
    • 接受的答案也是必要的 - 有时(也许是 IB 升级?)该列最终比 AppKit 意识到它应该占据整个宽度窄 1 个像素表格视图。
    【解决方案3】:

    这只是一个一直在发生的 IB 问题(我不确定为什么)。要解决这个问题,只需将表格视图的大小调整为小于第二列的大小,然后将其拖回您想要的大小,第二列就会消失。

    【讨论】:

    • 谢谢,这解决了它,但不知何故,“调整大小”句柄仍然存在。有没有办法摆脱它?更新:好的,我找到了,只需检查标题中的“隐藏”即可解决!
    • 我遇到了同样的问题,但列只会扩展到一定的宽度,然后突然停止扩展。如果您看到此行为,请检查表格视图列的“最大”宽度是否设置为非常大的值,例如 100000。
    • 这在 XCode 6.1、OSX 10.10 中仍然有效。过去两天把我丢在地狱里。
    • 仍然没有修复,这个答案现在已经快 4 岁了
    • 哈哈不敢相信我在 5 年前就回答了这个问题,而这个错误仍然存​​在于 Xcode 中。老实说,应该是一个快速修复表格视图在更改列数时重绘自身的地方。
    猜你喜欢
    • 2021-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 2017-01-24
    • 2013-04-22
    • 2021-12-31
    相关资源
    最近更新 更多