43
votes

I am currently trying to learn a bit of Cocoa (using the book Cocoa Programming for Mac OS X). In one of the exercises, we set up a NSTableView with only one column, to act as a list of things.

What annoys me is that in Interface Builder, I could not find a way to have the (only) column always take the full width of the NSTableView. As a consequence, it always somehow looks like there are 2 columns when there is actually only one.

Any idea ?

3

3 Answers

55
votes

This is just an IB problem that happens all the time (I'm not sure why). To solve this, simply just resize the table view to the size smaller than the 2nd column, then drag it back to the size you want and the 2nd column will disappear.

34
votes

Here's how I did it in Xcode 4.6...

In IB, select the table view and go to the Attributes Inspector. Choose 'Uniform' for 'Column Sizing'. Then, select the table column and choose 'Autoresizes with Table' for 'Resizing'.

These options correspond to:

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

I had to use both steps - sam's answer + the comment by David Douglas.

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

 //AND 
 [tableView sizeLastColumnToFit];