私のアプリでは、カテゴリのみを一種のメニューとして表示する NSOutlineView を設定しました。これは問題なく動作しますが、アイテムの選択を解除すると問題が発生し、下の画像のように各行のタイトルが上に移動します:
彼女は私が使用しているコードです:
- (NSInteger)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item {
return [sectionsArray count];
}
- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item {
return NO;
}
-(BOOL)outlineView:(NSOutlineView*)outlineView isGroupItem:(id)item {
return NO;
}
- (NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item {
NSTableCellView *cellView = [outlineView makeViewWithIdentifier:@"DataCell" owner:self];
cellView.imageView.image = [NSImage imageNamed:@"Point.png"];
cellView.textField.stringValue = item;
SectionCellCountField *number = [[SectionCellCountField alloc] initWithFrame:NSMakeRect(cellView.frame.size.width-50, 4, 35, 16)];
[cellView addSubview:number];
int rows = 0;
for (int i = 0; i < [dataArray count]; i++) {
if ([item isEqualToString:[[dataArray objectAtIndex:i]valueForKey:@"Cathegory"]]) {
rows = rows +1;
}
}
number.stringValue = [NSString stringWithFormat:@"%i", rows];
return cellView;
}
- (id)outlineView:(NSOutlineView *)outlineView
child:(NSInteger)index
ofItem:(id)item {
return [sectionsArray objectAtIndex:index];
}
なぜこの動作が発生しているのか、誰にも分かりますか? どうもありがとう!