2013-04-16 64 views
0

我從Web服務加載數組並在拾取器中顯示它們,並且所有工作都正常。我的數組包含每個問題類別的隨機數量的問題。現在我想要的是,我想添加一個更多的條目「你自己的問題」在數組的末尾,以便選擇器的最後一行顯示「你自己的問題」。我該怎麼做在NSMutableArray的末端插入元素

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view { 
    UILabel *retval = (id)view; 
    if (!retval) { 
     retval= [[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, [pickerView rowSizeForComponent:component].width, [pickerView rowSizeForComponent:component].height)]; 
    } 

    // retval.text = [idAndNameArray objectAtIndex:row]; 
    if([pickerType isEqualToString:@"picker"]) 
    { 
     retval.text = [idAndNameArray objectAtIndex:row]; 
    } 
    else 
    { 
     retval.text = [quesArray objectAtIndex:row]; 
    } 
    retval.font = [UIFont boldSystemFontOfSize:14]; 
    retval.numberOfLines = 3; 
    return retval; 
} 

此代碼只顯示從Web服務中獲取的行數(問題)。

編輯1:

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView 
{ 

    return 1; 
} 

- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component 
{ 
    if([pickerType isEqualToString:@"picker"]) 
    { 
     return [idAndNameArray count]; 
    } 
    else 
    { 
     return [quesArray count]; 
    } 

} 

編輯2:

通過使另一NSMutableArray裏與我的自定義對象 「自己的問題」,然後與陣列從Web服務獲取其附加解決

NSMutableArray *customObj = [NSMutableArray arrayWithObject: @"test"]; 
[quesArray addObjectsFromArray:customObj]; 

回答

1

UIPickerViewDataSource的方法calle d pickerView:numberOfRowsInComponent:返回您的數組的計數加上一個值(return arr.count+1;),並在您已實施的UIPickerVIewDelegate的方法中,當component大於arr.count-1if(row>(arr-1)){//return the label with 'Your own question'})時,將文本返回給您的標籤。祝你好運!

編輯:

- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component 
{ 
    if([pickerType isEqualToString:@"picker"]) 
    { 
     return [idAndNameArray count]; 
    } 
    else 
    { 
     return [quesArray count]+1; 
    } 

} 
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view { 
    UILabel *retval = (id)view; 
    if (!retval) { 
     retval= [[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, [pickerView rowSizeForComponent:component].width, [pickerView rowSizeForComponent:component].height)]; 
    } 

    // retval.text = [idAndNameArray objectAtIndex:row]; 
    if([pickerType isEqualToString:@"picker"]) 
    { 
     retval.text = [idAndNameArray objectAtIndex:row]; 
    } 
    else 
    { 
     if(row>quesArray.count-1){ 
     retval.text = @"You own question"; 
     } 
     else{ 
      retval.text = [quesArray objectAtIndex:row]; 
     } 
     } 
     retval.font = [UIFont boldSystemFontOfSize:14]; 
     retval.numberOfLines = 3; 
     return retval; 
    } 
+0

,但我需要只有一個組件在選擇器 – user2268539

+0

這是你在說什麼。如果([quesArray數] - 1> quesPicker.numberOfComponents).... ? – user2268539

+0

是的,你可以爲'pickerView:numberOfRowsInComponent:'和'numberOfComponentsInPickerView:'提供代碼,這樣我就可以正確理解你了嗎? –