private void SetTableColumns(NSTableView tableView) { // Always keep at least one column int numColumns = (int) (tableView.EnclosingScrollView.Frame.Width / maxColumnWidth); if (numColumns < 1) { numColumns = 1; } int existingColumnCount = tableView.TableColumns().Count(); if (numColumns > existingColumnCount) { logger.Info("Add columns; {0} to {1}", existingColumnCount, numColumns); while (tableView.TableColumns().Count() < numColumns) { var copy = new NSTableColumn(); copy.Width = copy.MaxWidth = maxColumnWidth; NSTableColumn column = tableView.TableColumns().First(); copy.DataCell = (NSCell) column.DataCell.Copy(); tableView.AddColumn(copy); } tableView.ReloadData(); } else if (numColumns < existingColumnCount) { logger.Info("Remove columns; {0} to {1}", existingColumnCount, numColumns); while (tableView.TableColumns().Count() > numColumns) { tableView.RemoveColumn(tableView.TableColumns().Last()); } tableView.ReloadData(); } }