gpt4 book ai didi

NSTableView 单元格中的 cocoa NSView

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

我是 cocoa 的新手,我很沮丧,我花了几乎半天的时间试图找出如何将 NSView 添加到 NSTableView 单元格,但我还没有找到可以提供帮助的好指南我做了我想要实现的目标,也许有人可以看看我尝试过的内容并告诉我为什么它不起作用以及我如何让它发挥作用......

-(NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{
NSTableCellView *view = [tableView makeViewWithIdentifier:@"MyView" owner:self];
NSTextField *textfield = [[NSTextField alloc]initWithFrame:NSMakeRect(0, 0, 100, 30)];
[textfield setStringValue:predictate_search[row]];
[textfield setBackgroundColor:[NSColor redColor]];
[view addSubview:textfield];
[view setNeedsDisplay:YES];
return view;
}

我想要实现的是让两个 NSTextFields 彼此重叠,并且表格单元格具有自定义背景。上面是我只是想让一个 NSTextField 工作,但没有运气......

NSTableView 正在以编程方式创建:

NSScrollView *scrollView = [[NSScrollView alloc]initWithFrame:bg];
[scrollView setHasVerticalScroller:YES];
[self addSubview:scrollView];

search_results = [[NSTableView alloc]initWithFrame:bg];
NSTableColumn *column = [[NSTableColumn alloc] initWithIdentifier:@"id"];
[[column headerCell] setStringValue:@"Cities"];
[column setWidth:1000.0];

[search_results addTableColumn:column];
[search_results setDelegate:(id)self];
[search_results setDataSource:(id)self];
[search_results reloadData];

[scrollView setDocumentView:search_results];

我有点困惑要为 makeViewWithIdentifier: 添加什么内容,我看过 WWDC 2011 NSTableViews 上的视频,但我仍然不太确定。

如果您需要更多信息,请询问

谢谢

编辑第一次回答后:

-(NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{
NSTableCellView *view = [tableView makeViewWithIdentifier:[tableColumn identifier] owner:self];
if(view == nil){
NSTableCellView *view = [[NSTableCellView alloc]initWithFrame:[tableView frame]];
view.identifier = [tableColumn identifier];
}
NSTextField *textfield = [[NSTextField alloc]initWithFrame:NSMakeRect(0, 0, 100, 30)];
[textfield setStringValue:predictate_search[row]];
[textfield setBackgroundColor:[NSColor redColor]];
[view addSubview:textfield];
[view setNeedsDisplay:YES];
return view;

}

但是还是不行?

最佳答案

下面的代码解决了我的问题:

-(NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{
NSView *view = [tableView makeViewWithIdentifier:@"MyView" owner:self];

if (view == nil) {
view = [[NSView alloc]initWithFrame:NSMakeRect(0, 0, 100, 30)];
NSTextField *result = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 25, 800, 25)];
NSTextField *result2 = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 800, 25)];
result.stringValue = [predictate_search objectAtIndex:row];
result2.stringValue = @"UnitedKingdom";
[view addSubview:result];
[view addSubview:result2];
[view setNeedsDisplay:YES];
}

return view;

}

感谢您的帮助:)

关于NSTableView 单元格中的 cocoa NSView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13334140/

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