私は、UITableViewを使用してiOS上のテーブルヘッダーを変更するチュートリアルを見つけることができましたが、Mac開発の情報を見つけることはできませんでした。誰もが良いリソース/テーブルの外観を変更する手順を知っていますか?Macでテーブルヘッダーを変更する
ザック
私は、UITableViewを使用してiOS上のテーブルヘッダーを変更するチュートリアルを見つけることができましたが、Mac開発の情報を見つけることはできませんでした。誰もが良いリソース/テーブルの外観を変更する手順を知っていますか?Macでテーブルヘッダーを変更する
ザック
は、テーブルのヘッダーは、あなたが、NSTableHeaderCellをサブクラスその描画方法の一つに、独自のカスタム描画を実行し、その後、あなたのサブクラスのインスタンスで各列のヘッダーセルを交換する必要がある表示方法を変更します。
また、NSTableHeaderViewをサブクラス化して、ヘッダーセルが表示されない任意のスペースを描画し、テーブルビューのcornerView
を置き換える必要があることがあります。
for (NSTableColumn *column in [tableView tableColumns]) {
[column setHeaderCell:
[[[MyHeaderCell alloc]
initTextCell:[[column headerCell] stringValue]]
autorelease]];
}
をそしてここNSTableHeaderCellのサブクラスのための出発点です:
これは、あなたが開始を取得する必要
@interface MyHeaderCell : NSTableHeaderCell
{
}
- (void)drawWithFrame:(CGRect)cellFrame
highlighted:(BOOL)isHighlighted
inView:(NSView *)view;
@end
@implementation MyHeaderCell
- (void)drawWithFrame:(CGRect)cellFrame
highlighted:(BOOL)isHighlighted
inView:(NSView *)view
{
CGRect fillRect, borderRect;
CGRectDivide(cellFrame, &borderRect, &fillRect, 1.0, CGRectMaxYEdge);
NSGradient *gradient = [[NSGradient alloc]
initWithStartingColor:[NSColor whiteColor]
endingColor:[NSColor colorWithDeviceWhite:0.9 alpha:1.0]];
[gradient drawInRect:fillRect angle:90.0];
[gradient release];
if (isHighlighted) {
[[NSColor colorWithDeviceWhite:0.0 alpha:0.1] set];
NSRectFillUsingOperation(fillRect, NSCompositeSourceOver);
}
[[NSColor colorWithDeviceWhite:0.8 alpha:1.0] set];
NSRectFill(borderRect);
[self drawInteriorWithFrame:CGRectInset(fillRect, 0.0, 1.0) inView:view];
}
- (void)drawWithFrame:(CGRect)cellFrame inView:(NSView *)view
{
[self drawWithFrame:cellFrame highlighted:NO inView:view];
}
- (void)highlight:(BOOL)isHighlighted
withFrame:(NSRect)cellFrame
inView:(NSView *)view
{
[self drawWithFrame:cellFrame highlighted:isHighlighted inView:view];
}
@end
コードのtableViewに列ヘッダーを変更するには:
NSString *title = @"Your Title";
NSTableColumn *yourColumn = self.tableView.tableColumns.lastObject;
[yourColumn.headerCell setStringValue:title];
それは素晴らしい答えです。私は2日前にそれを見つけたかったと思う。それは、机の上で私の頭を叩く48時間の時間を意味するでしょう。 :-) – nomothetis
ありがとう、あなたは私にgoogl'ingの時間を節約しました! –
私はこれを持っていますが、私はそれを達成するために、テーブルヘッドセルの境界線で境界線を付けたいのですか? – Jesus