gpt4 book ai didi

xcode - 在cocoa应用程序中创建菜单和子菜单

转载 作者:行者123 更新时间:2023-12-03 17:02:48 25 4
gpt4 key购买 nike

我正在开发一个 cocoa 应用程序,我需要在我的应用程序中创建菜单和子菜单。

我附上了使用flex设计的屏幕截图。我怎样才能在 cocoa 中做同样的事情。

enter image description here

如有任何帮助,我们将不胜感激。

谢谢。

最佳答案

你的问题本身是不完整的,但会尝试匹配你期望的解决方案......你发布的屏幕截图(你从未提到你所拍摄的屏幕截图的来源,通过分析我在你的问题中编辑的设计为“Flex”)看起来您不想处理下拉菜单的 NSMenuItem 和 NSMenu 类...

解决方案 1:创建一个自定义 View (可能是 NSView 的 subview ,例如 popview)来处理输入、显示标签、 ImageView 等。

==> 基本上,菜单栏和菜单项都被包装到 NSView 中,下拉菜单被包装到 NSPanel 中……根据设计,您必须使用 NSView,因为您将能够添加你喜欢的角落,是的,也可以添加背景颜色......菜单项实际上有 NSTextView 的 subview 。如果它是一个菜单栏项,那么它只有一个标题文本 subview ,如果它是一个子菜单项,那么它有 3 个文本 subview ,一个用于复选标记,一个用于标题,一个用于热键列表……否需要担心事件的处理,各个类执行自己的事件处理...这是一个相当复杂的解决方案,但符合您的要求...

为您找到了一些示例,请查看此 code这是用 C++ 编写的。

解决方案 2:带有自定义单元格的 NSTableView。可能很丑陋,但也许值得一试。

==> 创建一个自定义的 NSTableCellView/NSCell,其中包含 NSImageView(用于笔等图标)、NSTextView(用于文本“笔粗细”)和另一个 NSImageView(用于右上角图标)因为它是 subview ......当用户点击你的单元格时,你必须执行以下两个操作之一......(1)如果你想要子菜单,那么该单元格应该使用原点再创建一个 NSTableView ( cell.frame.origin.x+cell.frame.size.width, cell.frame.origin.y)...(2) 如果没有子菜单,则执行直接任务...

示例:假设“MenuItemCell”是自定义类名,在委托(delegate)方法中tableView willDisplayCell 添加单元格...

   - (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {

MenuItemCell *cell = [tableView makeViewWithIdentifier:tableColumn.identifier owner:self];
result.imageView.image = //ur image
result.textView.setString//;
result.imageView.image = //corner image icon,if you would like to have submenu upon clicking this cell.
return result;
}

选择自定义单元格时,

- (BOOL)tableView:(NSTableView *)tableView shouldSelectRow:(NSInteger)rowIndex 
{
NSLog(@"%i tapped!", rowIndex);
NSTableCellView *selectedRow = [tableView viewAtColumn:0 row:rowIndex makeIfNecessary:YES];
//if you would like to have the submenu,display one more NSTableView,based on the cell origin as i described above...don't forget to add the animation..
return YES;
}

快乐编码..:-)

关于xcode - 在cocoa应用程序中创建菜单和子菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24444346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com