I create an NSTableView inside an NSScrollView programmatically, but when I try to set a frame in a scroll view, I get a constraint error.
Unable to simultaneously satisfy constraints: ( "<NSAutoresizingMaskLayoutConstraint:0x107d4ec50 h=--& v=--& V:[NSScrollView:0x10068c570(372.5)]>", "<NSAutoresizingMaskLayoutConstraint:0x107d4d020 h=-&- v=-&- V:[NSClipView:0x10068d7f0]-(673)-| (Names: '|':NSScrollView:0x10068c570 )>", "<NSAutoresizingMaskLayoutConstraint:0x107d4cfc0 h=-&- v=-&- V:|-(2)-[NSClipView:0x10068d7f0] (Names: '|':NSScrollView:0x10068c570 )>" ) Will attempt to recover by breaking constraint <NSAutoresizingMaskLayoutConstraint:0x107d4d020 h=-&- v=-&- V:[NSClipView:0x10068d7f0]-(673)-| (Names: '|':NSScrollView:0x10068c570 )> Set the NSUserDefault NSConstraintBasedLayoutVisualizeMutuallyExclusiveConstraints to YES to have -[NSWindow visualizeConstraints:] automatically called when this happens. And/or, break on objc_exception_throw to catch this in the debugger.
They seem to be created automatically.
This is my creation code (using an arc). I will subclass NSView
-(void)addColumnsToTable{ NSTableColumn *col = [[NSTableColumn alloc]initWithIdentifier:@"priority"]; [col.headerCell setStringValue:@"priority"]; [col setWidth:10]; [col setMinWidth:1]; [col setMaxWidth:10]; [self.tableView addTableColumn:col]; // col = [[NSTableColumn alloc]initWithIdentifier:@"name"]; // [self.tableView addTableColumn:col]; } -(void)createTable{ NSTableView *tableView = [[NSTableView alloc]initWithFrame:NSZeroRect]; [tableView setDelegate:self]; [tableView setDataSource:self]; NSScrollView *scrollView = [[NSScrollView alloc]initWithFrame:self.bounds]; [scrollView setBorderType:NSGrooveBorder]; [self addSubview:scrollView]; [scrollView setDocumentView:tableView]; [scrollView setHasVerticalScroller:YES]; [scrollView setAutohidesScrollers:YES]; self.tableView = tableView; self.scrollView = scrollView; [self addColumnsToTable]; }
This is where it breaks:
-(void)setFrame:(NSRect)frameRect{ [super setFrame:frameRect]; [self.scrollView setFrame:self.bounds]; }
Is there any way to turn off these automatic restrictions?
source share