我正在尝试为列出的对象创建一个带有自定义标头组(父节点)的NSOutlineVew.(注意:我有基于单元格的NSOutlineView).例如,它看起来像Xcode"Navigator"或Numbers侧边栏.我使用每个类别的分隔属性的默认组,但它看起来不像我想要的那样.我需要一个父节点(单元格),我可以直观地调整(添加一个控件元素和图像).
我尝试通过将一组对象传递给NSDictionary来完成此操作,为每个组提供特定的特定键.结果,通过NSLog一切都正确显示,但是这个变量作为程序NSOulineView的源传输失败.
ProjectViewController.h
@interface ProjectViewController : NSViewController <NSOutlineViewDataSource, NSObject> {
IBOutlet NSOutlineView *outlineView;
FSEntity *content;
}
@property (readonly, assign) NSMutableArray *objects;
@end
Run Code Online (Sandbox Code Playgroud)
ProjectViewController.m
@implementation ProjectViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Initialization code here.
// Setting default path to the local file or directory
NSString *home = NSHomeDirectory();
NSURL *url = [[NSURL alloc] initFileURLWithPath:home];
content = [[FSEntity alloc] initWithURL:url];
[self defineContentNSOutlineView];
NSLog(@"Array: %@",_objects);
// Basic ?onfiguration an instance NSOutlineView
[self configurationNSOutlineView]; …Run Code Online (Sandbox Code Playgroud) 有没有办法代替图标和活动标签显示标签(我想完成它,但找不到任何解决方案).我正在尝试以垂直显示方向(纵向)显示活动栏(不在下方)内的导航选项卡.我看了android库"ActionBarSherlock",一个"Styled"的例子,但有标签显示与标准包完全相同.
标准显示活动栏中的选项卡
+------------------------------------------------------------------------------+
| +---+ /˜\ + |
| | | Example \_/ + |
| +---+ \ + |
+------------------------------------------------------------------------------+
| | | |
| Section 1 | Section 2 | Section 3 |
| | | |
+------------------------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
它的外观示例(没有图标和标签的活动栏,里面有标签)
+------------------------------------------------------------------------------+
| | | /˜\ + |
| Tab 1 | Tab 2 | Tab 3 \_/ + |
| | | \ + |
+------------------------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
如果有人能告诉我如何在2.2到4.0版本中实现这一点,那就太好了.请帮我解决这个问题.
将NSOutlineView基于单元格更改为基于视图后,它不会显示文件系统树的图标和标题.这是我的代码:
- (void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item {
if ([[tableColumn identifier] isEqualToString:@"name"])
return [(ImageAndTextCell *)cell setTextFieldImage:[item icon]];
}
- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item {
return [((ConstructorFSEntity *)item) title];
}
- (NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item {
if ([item isKindOfClass:[FSEntity class]]) {
return [outlineView makeViewWithIdentifier:@"HeaderCell" owner:self];
} else {
return [outlineView makeViewWithIdentifier:@"DataCell" owner:self];
}
}
Run Code Online (Sandbox Code Playgroud)
我还有一个问题.如何将枚举项(文件系统项的数组)放入单元格"DataCell",并将"HeaderCell"声明为父文件夹(组)并为其分配标题(例如,@"根文件夹")和路径班级.因为,现在以前的基于视图的方法,仅在"HeaderCell"或"DataCell"中显示枚举项目,当我尝试为"HeaderCell"分配一些值时,应用程序崩溃.你能帮帮我吗?