0

我的 mainmenunib 文件中有一个NSComboBox。我创建了一个组合框“ cb ”的出口并将其与我的委托人连接我还将委托人和数据源与我的委托人连接。

-(void)applicationDidFinishLaunching:(NSNotification *)aNotification
{    arr=[NSMutableArray arrayWithObjects:@"a",@"b",@"c",@"d",@"e",@"f", nil];
[cb reloadData];
}

-(NSInteger)numberOfItemsInComboBox:(NSComboBox *)aComboBox{
return arr.count;
}

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

但是当我运行应用程序时,数据并没有出现在组合框中。请帮助我,因为我是可可编程的新手。提前致谢。

4

2 回答 2

2

您的方法从表面上看似乎是合理的,尽管使用可变对象作为实例变量通常是不明智的(出于与您的问题完全无关的原因,我们在这个阶段不需要讨论)。

有两件事可能会引发问题:

1)你在使用ARC吗?如果没有,arr它会从你下面消失,因为-arrayWithObjects返回一个自动释放的对象,而你没有保留它。如果您使用的是 ARC(我相信 Lion 上新项目的默认设置),这不适用于您。另外,我希望您会崩溃,而不仅仅是没有数据。

2) 更有可能的是,您忘记了-setUsesDataSource:YES,这是告诉 NSComboBox 是查看其数据源还是使用@JustinBoo 提供的内部内容方法的标志。我相信这默认为 NO,这会导致您的确切问题。目前我面前没有 Interface Builder,但 IIRC 有一个“使用数据源”复选框,您可以选中它以启用此属性。

于 2012-05-10T08:22:56.300 回答
1

-addItemWithObjectValue您可以像这样使用to Your添加对象NSComboBox

arr = [NSMutableArray arrayWithObjects:@"a",@"b",@"c",@"d",@"e",@"f", nil];

for (int i = 0; i < [arr count]; ++i)
{
    [cb addItemWithObjectValue:[arr objectAtIndex:i]];
}

您可以查看NSComboBox 参考以获取更多信息。

于 2012-05-10T07:18:11.937 回答