UIPickerView не загружается из viewDidAppear

У меня есть UIPickerview, который я изначально устанавливал из viewDidLoad. Он работал отлично.

Но я хочу, чтобы он обновлялся каждый раз, когда я возвращаюсь из другого представления, поэтому я поставил viewDidAppear

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];


    NSLog(@"View will appear");
    [self loadthepicker];

}


-(void) loadthepicker
{

    pickerLoaderArray=[[NSMutableArray alloc] init];
    [pickerLoaderArray addObject:@"one"];
    [pickerLoaderArray addObject:@"two"];
    [pickerLoaderArray addObject:@"thee"];
    [pickerLoaderArray addObject:@"four"];

    [pickerView selectRow:0 inComponent:0 animated:NO];

}



-(NSInteger)numberOfComponentsInPickerView:(NSInteger)component
{

    return 1;

}


-(NSInteger)pickerView:(UIPickerView *)picker numberOfRowsInComponent:(NSInteger)component
{

    return [pickerLoaderArray count];

}



-(NSString *)pickerView:(UIPickerView *)picker titleForRow:(NSInteger)row forComponent:(NSInteger)component{

    return [pickerLoaderArray objectAtIndex:row];
}

Хорошо, я думаю, что я мог бы получить ответ:

[pickerView reloadAllComponents];

Я добавил это в функцию loadthepicker, и теперь она работает нормально.

Это правильный способ сделать это?


person rbk    schedule 18.04.2014    source источник
comment
Да, это правильный способ сделать это. :)   -  person Rukshan Marapana    schedule 18.04.2014


Ответы (2)


Вы должны позвонить

[pickerView reloadAllComponents];
person Rukshan Marapana    schedule 18.04.2014

UIPickerview делегирует методы, вызываемые перед методом viewDidApear, поэтому вы должны вызывать метод делегатов uipikerview явным образом.

-(void) loadthepicker
{

pickerLoaderArray=[[NSMutableArray alloc] init];
[pickerLoaderArray addObject:@"one"];
[pickerLoaderArray addObject:@"two"];
[pickerLoaderArray addObject:@"thee"];
[pickerLoaderArray addObject:@"four"];

[self.pickerview selectRow:0 inComponent:0 animated:NO];
[self.pickerview reloadAllComponents];
}
person Ravi Tailor    schedule 18.04.2014