Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I have the only column of my NSTableView take all the width of the TableView?

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 ?

like image 257
tsimbalar Avatar asked Sep 25 '11 12:09

tsimbalar


3 Answers

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.

like image 140
TheAmateurProgrammer Avatar answered Nov 16 '22 18:11

TheAmateurProgrammer


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];
like image 36
sam Avatar answered Nov 16 '22 18:11

sam


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

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

 //AND 
 [tableView sizeLastColumnToFit];
like image 15
Tom Andersen Avatar answered Nov 16 '22 19:11

Tom Andersen