gpt4 book ai didi

macos - Cocoa osx NSTableview 改变行高亮颜色

转载 作者:行者123 更新时间:2023-12-03 16:08:14 25 4
gpt4 key购买 nike

在我的应用程序中,我有一个基于 View 的 NSTableView,其中有一列。行的突出显示颜色设置为常规(蓝色)。我需要将该颜色更改为我的自定义颜色。在界面生成器中,我尝试更改它,但唯一的选项是“无、常规和源列表”。

我尝试了这个帖子解决方案但没有成功: https://stackoverflow.com/a/9594543/3065901

我读到我必须使用这个委托(delegate)方法,但我不知道如何使用它。

- (NSTableRowView *)tableView:(NSTableView *)tableView rowViewForRow:(NSInteger)row

我尝试在该方法中绘制行,但收到​​无效的上下文警告,并且该行仍然保持相同的高亮显示。请发布一个如何使用此委托(delegate)方法的简单示例:

需要帮助请。提前致谢。

最佳答案

从此link .

MyNSTableRowView.h

#import <Cocoa/Cocoa.h>
@interface MyNSTableRowView : NSTableRowView
@end

MyNSTableRowView.m

#import "MyNSTableRowView.h"

@implementation MyNSTableRowView
- (id)init
{
if (!(self = [super init])) return nil;
return self;
}

- (void)drawSelectionInRect:(NSRect)dirtyRect {
if (self.selectionHighlightStyle != NSTableViewSelectionHighlightStyleNone) {
NSRect selectionRect = NSInsetRect(self.bounds, 2.5, 2.5);
[[NSColor colorWithCalibratedWhite:.65 alpha:1.0] setStroke];
[[NSColor colorWithCalibratedWhite:.82 alpha:1.0] setFill];
NSBezierPath *selectionPath = [NSBezierPath bezierPathWithRoundedRect:selectionRect
xRadius:6 yRadius:6];
[selectionPath fill];
[selectionPath stroke];
}
}
@end

AppDelegate.m

- (NSTableRowView *)tableView:(NSTableView *)tableView rowViewForRow:(NSInteger)row
{
MyNSTableRowView *rowView = [[MyNSTableRowView alloc]init];
return rowView;
}

关于macos - Cocoa osx NSTableview 改变行高亮颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28461362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com