正如标题所说,我实际上想要从NSBrowser控件中删除边框.父母是NSView和NSControl.NSBrowser本身没有可用的方法,父控件也没有.这个似乎完全没有记录.
至于删除边框的原因,因为它以编程方式停靠在另一个视图中,因此视图层次结构意味着已经存在边框.
有任何想法吗?
我能够让我的 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) 在我Browser
选择默认行的实现中,我使用了以下代码。
[browser setTarget:self];
[browser setAction:@selector(singleClickOnBrowser:)];
[browser sendActionOn:NSLeftMouseDown];
[browser selectRow:0 inColumn:0];
[browser sendAction];
Run Code Online (Sandbox Code Playgroud)
有没有办法区分用户点击和第一次选择的行来选择默认行?