3

headerview特定のサイズとグラデーションでを実装する必要があります。の特定のセルに画像を挿入する必要があります。次のコードを使用headerviewしてセルを作成しようとしましたが、headerviewをカスタマイズできませんでしたheaderview

[[tableColumn headerCell] setImage:[NSImage imageNamed:@"sampleHeader"]];

ヘッダービューのオーバーライドされたサブクラスを使用すると、ヘッダーセルの画像またはテキストを表示できませんでした。この問題を解決するためのポインターを教えてください。

 

サブクラス化することで画像やテキストを挿入することができました。NSTableHeaderCell高さを上げる方法はNSTableHeaderView


との両方をサブクラス化するNSTableHeaderViewNSTableHeaderCell、ヘッダーセルに何も表示できませんでした。headerviewとheadercellの設定に次のコードを使用しました。

[tableView setHeaderView:CustomHeaderView];

[tableColumn setHeaderCell:[[[CustomHeaderTableCell alloc] initImageCell: [NSImage imageNamed:@"sample"]]autorelease]];

私は以下のURLで与えられているのと同じ問題を抱えています

http://lists.apple.com/archives/cocoa-dev/2002/Jun/msg00331.html

4

3 に答える 3

13

NSTableHeaderViewをサブクラス化する必要はありません。

コントローラクラスの次のスニペットを使用して、ヘッダービューの高さを変更できました。

-(void)awakeFromNib {
    NSRect frame = tableView.headerView.frame;
    frame.size.height = 26;
    tableView.headerView.frame = frame;
}

スクロールビューがレイアウトを処理することに注意してください。必要に応じてheaderViewのフレームを自動的に変更しますが、高さはそのままにします。他の回答で提案されているようにクリップビューなどのサイズを変更する必要はありません。

于 2013-02-05T10:00:09.200 に答える
2

オブジェクトを作成NSTableHeaderViewし、フレーム(高さと幅で長方形)で初期化し、そのNSTableHeaderViewオブジェクトをテーブルビューに設定することもできます。

 NSTableHeaderView *tableHeaderView = [[NSTableHeaderView alloc] initWithFrame:NSMakeRect(0, 0, 120, 60)];
    [myTableView setHeaderView:tableHeaderView];
[tableHeaderView release];
于 2014-06-05T05:42:32.610 に答える
1

次のリンクは、問題の解決に役立ちました。

http://lists.apple.com/archives/cocoa-dev/2003/Feb/msg00676.html

のフレームを設定する必要があります。これはNSClipView、 コードで同じように実装した方法です。NSTableHeaderViewCornerView

for(NSView * subview in [topScrollView subviews])
{           
   for(NSView * subSubView in [subview subviews])
   {
      if([[subSubView  className] isEqualToString:@"NSTableHeaderView"] &&  [[subview className] isEqualToString:@"NSClipView"]) 
      {
         [subSubView setFrameSize:NSMakeSize(subSubView.frame.size.width, subSubView.frame.size.height+5)];//HeaderView Frame
         [subview setFrameSize:NSMakeSize(subview.frame.size.width, subview.frame.size.height+5)];//ClipView Frame
      }

    }
    if ([[subview className] isEqualToString:@"_NSCornerView"])
    {
       [subview setFrameSize:NSMakeSize(subview.frame.size.width, subview.frame.size.height+5)]; //CornerView Frame
    }
}
于 2011-12-23T06:50:12.420 に答える