具有下拉菜单的NSTableView和菜单中的图像

时间:2011-07-01 07:08:15

标签: objective-c cocoa nstableview nspopupbuttoncell

是的,是否有可能:

  1. 有两列的表(应该很容易)
  2. 其中一个Cell应该有图像,应该可以从下拉菜单中选择 通过谷歌搜索我所知道它必须是NSPopupButtonCell类型,但我只想在其中的图像,没有文字,
    我怎样才能做到这一点 ?
  3. 另一列是可编辑的,用户应该能够输入。
  4. 如果我能获得任何参考代码来实现它,那将是很好的。

1 个答案:

答案 0 :(得分:2)

我用以下方式做到了,

在Coloumn 1中选择DataCell并为其分配NSPopupButtonCell类型,默认情况下它不会出现,您需要明确选择它。

在代码中添加以下代码行...

NSTableColumn *option = [pTableColumns objectAtIndex:[pTableView columnWithIdentifier:OPTION_COLUMN_NAME]];
NSTableColumn *shortCutItem = [pTableColumns objectAtIndex:[pTableView columnWithIdentifier:SHORTCUT_COLUMN_NAME]];

// we want first cell to have the Image & Menu 
//Data type column drop down
NSPopUpButtonCell *dataTypeDropDownCell = [option dataCell];//[[NSPopUpButtonCell alloc] initTextCell:@"" pullsDown:YES];
[dataTypeDropDownCell setBordered:NO];
[dataTypeDropDownCell setEditable:YES];

NSArray *dataTypeNames = [NSArray arrayWithObjects:@"NULLOrignal", @"String", @"Money", @"Date", @"Int", nil];
[dataTypeDropDownCell addItemsWithTitles:dataTypeNames];

添加以下代码以设置正确的MenuItem

- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex{

    if([[aTableColumn identifier] isEqualToString:OPTION_COLUMN_NAME]){
        NSPopUpButtonCell *dataTypeDropDownCell = [aTableColumn dataCell];


        [dataTypeDropDownCell selectItem:[ dataTypeDropDownCell itemAtIndex:3]];
    }

}

现在只有待处理才能在MenuItem中附加Image,这根本不是什么大不了的事,

再次感谢您看一下这个,请告诉我是否还有其他方法可以做到....