标签: nsbrowser

从NSBrowser中删除边框

正如标题所说,我实际上想要从NSBrowser控件中删除边框.父母是NSView和NSControl.NSBrowser本身没有可用的方法,父控件也没有.这个似乎完全没有记录.

至于删除边框的原因,因为它以编程方式停靠在另一个视图中,因此视图层次结构意味着已经存在边框.

有任何想法吗?

cocoa nsbrowser

9
推荐指数
1
解决办法
491
查看次数

实现 NSBrowserDelegate 协议的问题

我能够让我的 NSBrowser 实例在第一列中显示正确的数据。但是,当我选择其中一个选项时,下一列只会显示相同的一组选项。我已经阅读了文档,查看了 Apple 的所有相关示例代码,以及我在互联网上可以找到的几乎所有内容,但我根本无法找出实现所需方法的正确方法。我提供给浏览器的数据是一个字典数组。每个字典又包含一个“子”键,它是另一个字典数组。这些字典有自己的“子”键,它们也是字典数组等。使用 JSON 进行描述(对象是字典,数组是数组),它看起来像这样:

data = [
    {
        name: 'David',
        children:[
            {
                name: 'Sarah',
                children: {...}
            },
            {
                name: 'Kevin',
                children: {...}
            }
        ]
    },
    {
        name: 'Mary',
        children:[
            {
                name: 'Greg',
                children: {...}
            },
            {
                name: 'Jane',
                children: {...}
            }
        ]
    }
]
Run Code Online (Sandbox Code Playgroud)

所以第一列应该显示“大卫”和“玛丽”。如果选择了“David”,下一列应显示“Sarah”和“Kevin”,依此类推。

我当前的实现依赖于我创建的自定义方法,该方法应该将浏览器的索引路径从提供的数据转换为相应的 NSArray 级别。这个方法看起来像:

- (NSArray *)getSelectionInBrowser:(NSBrowser *)browser
{
    NSArray *selection = browserData;
    NSIndexPath *path = [browser selectionIndexPath];
    for (NSUInteger i = 0; i < path.length; i++) {
        selection = [[selection objectAtIndex:i] objectForKey:@"children"]; …
Run Code Online (Sandbox Code Playgroud)

macos cocoa nsbrowser

3
推荐指数
1
解决办法
1101
查看次数

如何找到用户点击了 NSBrowser 中的任何行?

在我Browser选择默认行的实现中,我使用了以下代码。

[browser setTarget:self];
[browser setAction:@selector(singleClickOnBrowser:)];
[browser sendActionOn:NSLeftMouseDown];
[browser selectRow:0 inColumn:0];
[browser sendAction];
Run Code Online (Sandbox Code Playgroud)

有没有办法区分用户点击和第一次选择的行来选择默认行?

macos cocoa objective-c nsbrowser

2
推荐指数
1
解决办法
1393
查看次数

标签 统计

cocoa ×3

nsbrowser ×3

macos ×2

objective-c ×1