2016-11-15 2 views
-1

enter image description here $ Данные назначенного массива не отображаются в pickerView. Какую ошибку я делаю, поскольку не могу определить свою ошибку. Его .m файл кода: // PickerViewController.m // dropDownButtonTry //При использовании представления сборщика

#import "PickerViewController.h" 

@interface PickerViewController() 
{ 
    NSArray *genderArray; 
    NSArray *cityArray; 
    NSArray *currentArray; 
    UITextField *currentTextField; 
} 

@end 

@implementation PickerViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 

    cityArray = [[NSArray alloc]initWithObjects:@"Delhi",@"Mumbai",@"Chennai", nil]; 
    genderArray = [[NSArray alloc]initWithObjects:@"Male",@"Female",@"Transgender", nil]; 
    self.pickerView.hidden = YES; 
    self.btnDoneOutlet.hidden = YES; 



} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 

} 
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 

    [self.view endEditing:YES]; 
} 

//Needed to prevent keyboard from opening 
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
    currentTextField = textField; 
    if (textField == self.textFieldGenderOutlet) { 
     currentArray = genderArray; 
    } 
    if (textField == self.textFieldCityOutlet) { 
     currentArray = cityArray; 
    } 
    // do here everything you want 
    NSLog(@"Pressed on TextField!"); 
    self.pickerView.hidden = NO; 
    self.btnDoneOutlet.hidden = NO; 

    [self.view endEditing:YES]; // Hide keyboard 
    NSLog(@"****current array**** %@",currentArray); 
    return NO; 
} 

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 
{ 
    return 1; 
} 

-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component 
{ 
    return [currentArray count]; 

} 
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component 
{ 

    [currentTextField setText:[currentArray objectAtIndex:row]]; 


} 

-(NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component 
{ 
    return [currentArray objectAtIndex:row]; 
} 

- (IBAction)textFieldGenderAction:(id)sender { 
    self.pickerView.hidden = NO; 
    self.btnDoneOutlet.hidden = NO; 

} 

- (IBAction)btnDone:(id)sender { 
    self.pickerView.hidden = YES; 
    self.btnDoneOutlet.hidden = YES; 
} 

- (IBAction)textFieldCityAction:(id)sender { 
} 
@end 
+0

, что проблема возникает здесь? – KKRocks

+0

Проблема сэром - это выборщик, не отображающий данные массива. Пожалуйста, проверьте вопрос, я обновил изображение симулятора. – raj

+0

вам нужно инициализировать в viewdidload и перезагрузить pickerview, обновив этот массив. – KKRocks

ответ

1

Вам нужно перезагрузить вид сборщика:

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
    currentTextField = textField; 
    if (textField == self.textFieldGenderOutlet) { 
     currentArray = genderArray; 
    } 
    if (textField == self.textFieldCityOutlet) { 
     currentArray = cityArray; 
    } 
    // do here everything you want 
    NSLog(@"Pressed on TextField!"); 
    self.pickerView.hidden = NO; 
    self.btnDoneOutlet.hidden = NO; 

    [self.thePicker reloadAllComponents]; 


    [self.view endEditing:YES]; // Hide keyboard 
    NSLog(@"****current array**** %@",currentArray); 
    return NO; 
} 
+0

Спасибо за вашу драгоценную помощь, и моя проблема решена. – raj

+0

Добро пожаловать @raj ... – KKRocks

0

currentArray присваивается значение в textFieldShouldBeginEditing но не инициализируется в любом месте вашего кода.

Просто инициализировать currentArray в viewDidLoad, как показано ниже:

currentArray = [NSArray new]; 
+0

Что такое назначение в этом месте, просто обновите свой выборщик, вот и все, причина, по которой элемент не виден, здесь currentArray назначается не магазином –

+0

Я согласен, что 'pickerView' просто нуждается в обновлении. Но мы не можем назначить массив без инициализации. 'Array' никогда не будет отражать значения, если они назначены без инициализации. –

+0

, который сказал: не нужно инициализировать. –

Смежные вопросы