Обновить UIPickerView Количество строк - PullRequest
0 голосов
/ 10 ноября 2010

У меня есть UIPickerView, который заполняется NSMutableArray с именем sectionNamesArray.Когда элемент добавляется в sectionNamesArray, как мне вручную вызвать этот делегат?

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

{

return ([sectionNamesArray count] + 1);

}

Проблема заключается в том, что я добавляю этот pickerView в центр navBar в titleView.Если я попытаюсь обнулить UIPickerView и перераспределить его для повторного вызова делегата, PickerView появится в левой части панели навигации, а не в центре.Я предполагаю, что, возможно, настройки конструктора интерфейса получили его в центре ...?

Вот код для этого:

-(void) setupPickerView{
myPickerView = nil;
myPickerView = [[UIPickerView alloc] init];
myPickerView.backgroundColor = [UIColor clearColor];
myPickerView.delegate = self;
myPickerView.dataSource = self;
myPickerView.showsSelectionIndicator = YES;
[self.navigationController.navigationBar setBackgroundView:myPickerView];

CGSize pickerSize = [myPickerView sizeThatFits:CGSizeZero];
UIView *pickerTransformView = [[UIView alloc] initWithFrame:CGRectMake(-40.0, -43.0, pickerSize.width, pickerSize.height)];
pickerTransformView.transform = CGAffineTransformMakeScale(.55f, .55f);

[pickerTransformView addSubview:myPickerView];
[self.navigationController.navigationBar setBackgroundView:pickerTransformView];

}

1 Ответ

4 голосов
/ 10 ноября 2010

Когда вы добавляете что-то в свой массив, вы не можете использовать [UIPickerView reloadAllComponents] или - (void)reloadComponent:(NSInteger)component?

Это, скорее всего, запросит вашего делегата и вызовет все необходимое для проверки вашего массива и перезагрузки представления.

...