您好我正在尝试在NSTableView中使用NSPopUpButtonCell.基本上,当您在弹出窗口中选择一个项目时,我希望它显示在表格视图列/行中.当按下弹出单元格中的项目时,我使用"tableView:setObject:forTableColumn:row"将其存储在数据源中,然后当表请求检索数据并在"tableView:objectValueForTableColumn"中设置弹出单元格的状态时:行:".请查找附上我的代码.我现在完全被困住了.我希望有人能理解它.先感谢您.
这是在控制器内部:
//Create the table columns
NSTableColumn *nameColumn = [[NSTableColumn alloc] initWithIdentifier:LXDetailItemName];
NSTableColumn *dataTypeColumn = [[NSTableColumn alloc] initWithIdentifier:LXDetailItemDataType];
NSTableColumn *deviceColumn = [[NSTableColumn alloc] initWithIdentifier:LXDetailItemDevice];
//Data type column drop down
NSPopUpButtonCell *dataTypeDropDownCell = [[NSPopUpButtonCell alloc] initTextCell:@"" pullsDown:YES];
[dataTypeDropDownCell setBordered:NO];
[dataTypeDropDownCell setEditable:YES];
NSArray *dataTypeNames = [NSArray arrayWithObjects:@"NULL", @"String", @"Money", @"Date", @"Int", nil];
[dataTypeDropDownCell addItemsWithTitles:dataTypeNames];
[dataTypeColumn setDataCell:dataTypeDropDownCell];
//Add the columns to the table
[tableView addTableColumn:nameColumn];
[tableView addTableColumn:dataTypeColumn];
[tableView addTableColumn:deviceColumn];
enter code here
Run Code Online (Sandbox Code Playgroud)
这是在datasource/delegate类中.
enter code here
@implementation LXTestDataSource
- (id)init
{
self = …
Run Code Online (Sandbox Code Playgroud) 有没有办法将NSMenu
类似对象显示为 a 的内容NSPopover
?
本质上,我想在您右键单击应用程序图标时重现 macOS Dock 所做的事情(我不介意这里的深色背景,我只对以类似弹出框的窗口样式显示菜单感兴趣指向其目标的箭头)。
我一直在研究是什么NSPopUpButton
,但我找不到以这种方式配置这个组件的方法;它有一个,arrowPosition
但这实际上是指按钮本身上箭头的方向。也是NSMenu
一个NSObject
又一次,我看不到一种干净的方式来抓取它的视图并将其添加到弹出窗口中,所以我想这是不可能的,但也许你有更好的主意?
感谢您的任何建议!
我有一个应用程序列表,我想制作一个NSPopupButton
应用程序名称菜单,每个项目左侧有一个图标.
我已经能够绑定NSPopupButton
到我的项目数组,但没有图像的绑定条目.我以为我可以把一个细胞放在那里并将细胞绑定为图像和文本,但我在IB中找不到合适的细胞.
有没有一种干净简单的方法来使用绑定?我必须写一个自定义单元格吗?
我有一个NSPopupButton,我想要它调整自己以适应所选的标题.
[NSPopupButton sizeToFit]不符合我的需要,因为弹出窗口被调整为最大的标题项而不是当前选定的标题项
我试图在没有成功的情况下尽可能地接近
#define ARROW_WIDTH 20
NSDictionary *displayAttributes = [NSDictionary dictionaryWithObjectsAndKeys:[popup font], NSFontAttributeName, nil];
NSSize titleSize = [popup.titleOfSelectedItem sizeWithAttributes:displayAttributes] + ARROW_WIDTH;
Run Code Online (Sandbox Code Playgroud)
但是常量值ARROW_WIDTH是一个非常脏且容易出错的解决方案.
状态栏上的TextWrangler编码组合就像我需要的那样工作
我已经使用NSImageCell,一些NSTextFieldCells和一个NSPopUpButtonCell创建了NSCell的自定义子类.
我正在使用以下命令初始化弹出单元格:
myPopUpCell = [[NSPopUpButtonCell alloc] init];
[myPopUpCell setBordered:NO];
[myPopUpCell setAutoenablesItems:NO];
[myPopUpCell addItemsWithTitles:[NSArray arrayWithObjects:@"Item1", @"Item2", @"Item3"]];
Run Code Online (Sandbox Code Playgroud)
并将其吸引进去 drawInteriorWithFrame:inView:
一切似乎都很好,除了在运行我的应用程序时单击弹出单元格时,单元格不会弹出.关于可能出错的任何建议?