2012-05-10 74 views
0

我的mainmenunib文件中有一個NSComboBox。 我創建了一個組合框「cb」的插座,並與我的代理 建立了連接。我還將委託和數據源與我的代理連接。如何在可可中的nscombobox中顯示數據?

-(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]; 
} 

但是,當我運行的應用程序數據不是來組合框中。 請幫助我,因爲我是可可編程的新手。 在此先感謝。

回答

2

雖然使用可變對象作爲實例變量通常是不明智的(因爲與此處的問題完全無關的原因以及我們在此階段不需要考慮的因素),但您的方法似乎是合理的, 。

有跡象表明,跳出儘可能問題,兩件事情:

1)是否使用ARC?如果不是,arr將從你下面消失,因爲-arrayWithObjects返回一個自動釋放對象,並且你沒有任何東西保留它。如果您使用ARC(我相信Lion的新項目的默認設置),這不適用於您。另外我希望你會崩潰,不只是沒有數據。

2)更可能的是,您忘記了-setUsesDataSource:YES,它是告訴NSComboBox是查看其數據源還是使用@JustinBoo提供的內部內容方法的標誌。我相信這默認爲NO,這會導致你確切的問題。我目前沒有Interface Builder,但是IIRC有一個「使用數據源」複選框,您可以選中以啓用此屬性。

1

您可以像這樣添加使用-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 Reference以獲取更多信息。

+0

這是*一種*方式來做到這一點。 OP似乎對使用數據源感興趣,然而,這是完全可以接受的(並且可以說更加靈活)。 –

+0

是的,這種方法很簡單。 – user1295948

相關問題