簡體   English   中英

如何在可可的nscombobox中顯示數據?

[英]How to display data in a nscombobox in cocoa?

我的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];
}

但是,當我運行應用程序數據時,組合框中沒有數據。 請幫助我,因為我是可可編程的新手。 提前致謝。

從表面上看,您的方法似乎是合理的,盡管使用可變對象作為實例變量通常是不明智的(由於與您的問題完全無關的原因,在此階段我們無需贅述)。

有兩件事可能會跳出來:

1)您正在使用ARC嗎? 如果不是這樣, arr將從您的-arrayWithObjects下消失,因為-arrayWithObjects返回一個自動釋放的對象,您什么也沒有保留。 如果您使用的是ARC(我相信Lion上新項目的默認設置),則這不適用於您。 另外,我希望您會崩潰,而不僅僅是獲取數據。

2)您更有可能忘記了-setUsesDataSource:YES ,它是告訴NSComboBox是查看其數據源還是使用@JustinBoo提供的內部內容方法的標志。 我相信這默認為NO,這將導致您的確切問題。 我目前沒有界面生成器,但是IIRC上有一個“使用數據源”復選框,您可以檢查該復選框以啟用此屬性。

您可以使用-addItemWithObjectValue將對象添加到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參考以獲取更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM