2014-12-10 1 views
0

Как динамически добавлять данные NSComboBox с использованием объектных фреймов c и какао в xcode?Динамические данные для NSCombobox

-(void)awakeFromNib 
{ 
    NSLog(@"View controller instance with view: %@", self.view); 


    char* data = getData(); // I will be using data to populate records below 


    // Setup combo box with data from getData() instead of dummy apple, bag, cat, dog 
    self.myRecords = @[@“apple”, @“bag”, @“cat”, @“dog"]; 
    [self.myRecordsCombo addItemsWithObjectValues:self.myRecords]; 


} 

// C Method 
int 
getData() 
{ 
    char name[128]; 
    NSString *str; 

    while(/*traverse through data for combo box */){ 
     NSString *tempName = [NSString stringWithFormat:@"%c", name];   
     str = [str stringByAppendingString:tempName]; 

     .... 
    } 
    NSLog(str); //will be passed to awakeFromNib and populate to combo box 


} 

Возможно, не получается получить правильные строки, так как в итоге они будут содержать переменные мусора.

+0

Вы хотите, чтобы добавить элементы в NSComboBox программно? –

+0

Да, @AnoopVaidya – newbieMACuser

ответ

1

Сначала вам нужно создать список предметов. (NSArray).

NSArray *items = @[@"Apple", @"Ball", @"Cat", @"Doll"]; 

Удалить все существующие элементы, поскольку по умолчанию три элемента добавляются в поле со списком.

[self.comboBox removeAllItems]; 

Теперь добавьте элементы в поле со списком:

[self.comboBox addItemsWithObjectValues:items]; 
+0

Что делать, если я добавлю больше предметов помимо Apple, Ball, Cat и Doll на основе результата во время цикла? – newbieMACuser

+0

Я ищу что-то, что работает как array_push() в php (http://www.w3schools.com/php/func_array_push.asp) – newbieMACuser

+1

@newbieMACuser см. Методы 'NSMutableArray', которые начинаются с" add "и" insert " – justin

0

Попробуйте так: -

-(void)someMethod{ 
    [self.comboBox removeAllItems]; 
    [email protected][@"Item1,Item2,Item3,Item4"];//Assuming some values 
    NSUInteger i=0; 
    while (i!=yourArr.count) 
    { 
     //Below you are sending data to the another method which will populate the combo box 
     NSLog(@"%@",yourArr[i]); 
     [self yourMethod:yourArr[i]]; 
     i++; 
    } 
    } 

//Below is your different method 
-(void)yourMethod:(NSString*)yourStr 
{ 
[self.comboBox addItemWithObjectValue:[NSString stringWithFormat:@"%@",yourStr]]; 
} 


//After seeing your question below is the Conversion from C to Objective-C 

-(void)someMethod 
{ 
    NSArray *arr1=[self.comboBox.objectValues[0] componentsSeparatedByString:@","]; 
     NSUInteger i=0; 
    NSString *str; 


    while(i<arr1.count-1){ 
     i++; 
      NSLog(@"%@",arr1[i]); 
     NSString *tempName = [NSString stringWithFormat:@"%@", arr1[i]]; 
     str = [str stringByAppendingString:tempName]; 
    } 
    NSLog(@"%@",str); //will be passed 
} 
+0

Я хотел бы сначала сохранить данные в строковой переменной, а затем передать их, поскольку заполнение поля со списком осуществляется другим способом. Как я могу это достичь? – newbieMACuser

+0

Какая альтернатива для себя? Я получаю «незаявленный идентификатор». – newbieMACuser

+0

, пожалуйста, см. Обновленный пост выше – newbieMACuser