Cocoa NSTableCellView中NSTextField的宽度

Cocoa NSTableCellView中NSTextField的宽度,cocoa,nsoutlineview,nstablecellview,Cocoa,Nsoutlineview,Nstablecellview,我正在尝试创建一个非常简单的NSTableCellView,其中包含一个文本字段和一个按钮。下面是布局NSTableCellView的代码。我希望文本字段的宽度为100px - (NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item { MyTableCellView *cellView = [outlineView

我正在尝试创建一个非常简单的NSTableCellView,其中包含一个文本字段和一个按钮。下面是布局NSTableCellView的代码。我希望文本字段的宽度为100px

- (NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item {

    MyTableCellView *cellView = [outlineView makeViewWithIdentifier:@"MyTableCellView" owner:self];

     if (cellView == nil) {
         cellView = [[MyTableCellView alloc] initWithFrame:NSMakeRect(0, 0, NSWidth(outlineView.bounds), [outlineView rowHeight])];

         NSTextField *textField = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 100, [outlineView rowHeight])];
         [cellView addSubview:textField];
         cellView.textField = textField;

         NSButton *button = [[NSButton alloc] initWithFrame:NSMakeRect(108, 0, 50, [outlineView rowHeight])];
         [cellView addSubview:button];
         cellView.button = button;

         cellView.identifier = @"MyTableCellView";
     }

     cellView.textField.stringValue = item.stringValue;

     return cellView;
}
但是,执行此操作时,NSTextField将占用整行:


我做错了什么?

我发现了问题。我毫不犹豫地将我创建的NSTextField设置为NSTableCellView的textfield出口。事实证明,不应该这样做,因为这样会自动调整大小

所以我拿出这条线,它按预期工作:

cellView.textField = textField;