2

私のアプリでは、カテゴリのみを一種のメニューとして表示する NSOutlineView を設定しました。これは問題なく動作しますが、アイテムの選択を解除すると問題が発生し、下の画像のように各行のタイトルが上に移動します:

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];

}

なぜこの動作が発生しているのか、誰にも分かりますか? どうもありがとう!

4

1 に答える 1

2

自動レイアウトを使用していますか?テーブル セル ビュー サブビューの上部、下部、または高さの少なくとも 2 つを制約するのを忘れたときに、この種のことが起こるのを見てきました。テーブル ビューとアウトライン ビューについては、あいまいなレイアウトが機能する傾向があります。

于 2013-12-16T01:40:23.180 に答える