gpt4 book ai didi

cocoa - 带有 NSComboBox 的自定义数据源不显示任何内容

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

问候,我在尝试在 NSComboBox 中设置数据源时遇到以下问题。

这是我的自定义数据源类:

@interface CComboDatasource : NSObject <NSComboBoxDataSource> {
@private
NSMutableArray* values;
}
@property (nonatomic,retain) NSMutableArray* values;
-(int)itemCount;

@end


@implementation CComboDatasource
@synthesize values;

- (id)init
{
self = [super init];
if (self) {
// Initialization code here.
values=[[NSMutableArray alloc] init];

[values addObject:@"A"];
[values addObject:@"B"];
[values addObject:@"C"];
}

return self;
}


- (NSInteger)numberOfItemsInComboBox:(NSComboBox *)aComboBox
{
return [values count];
}

- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index
{
return [values objectAtIndex:index];
}

- (void)dealloc
{
[values release];
[super dealloc];
}

@end

稍后在另一个文件中,我将我的 IBOutlet 与我的 NSComboBox 对象 (c_box) 连接,并设置数据源 (CComboDatasource* data_source)

 [c_box setUsesDataSource:TRUE];
[c_box setDataSource:data_source];
[c_box setEditable:NO];

执行前面的操作后,组合框中没有显示任何内容,我做错了什么?

最佳答案

你所拥有的对我来说基本上是正确的。我可以想到一些你可以尝试的事情:

1) 尝试暂时将“return [values count]”替换为“return 5”,并将“return [values objectAtIndex:index]”替换为“return @”任意字符串“”。如果“任意字符串”出现在组合框中,您就会知道问题出在“值”数组上。

2)尝试像这样初始化“values”数组:

values = [NSMutableArray array];

(这是 NSArray 中提供的一种便捷方法。)

如果您坚持使用 alloc-init 方法,则应该以这种方式创建一个单独的临时数组,将其分配给“值”,然后释放它。否则,由于您已使用“保留”对“值”进行了属性化,因此您将保留它两次。

3) 尝试在 c_box 调用末尾添加此行:

[c_box reloadData];

每当您更改数据源数组时,请再次调用它。

4)我不明白为什么将数据源类与控制组合框的类分开应该是一个问题,但如果它仍然不起作用,请尝试使拥有组合框导出的窗口/ View Controller 成为实现的类NSComboBoxDataSource 协议(protocol)(numberOfItemsIn 和 objectValueFor 方法),并将“值”放入此 Controller 类中,或者授予此类访问“值”的权限。

希望有帮助。

关于cocoa - 带有 NSComboBox 的自定义数据源不显示任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5759869/

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