как добавить uipickerview как subview к mainview в iphone? - PullRequest
1 голос
/ 26 мая 2011

У меня есть одно приложение, в котором, когда пользователь нажимает кнопку, я хочу открыть uipickerview в качестве подпредставления для основного вида, а после того, как пользователь выбирает элемент, он должен быть удален из основного вида (выпадающий вид функциональности). Для этого я написал код, как показано ниже:

-(void)showPrefPicker:(id)sender
{


   UIView *subView=[[UIView alloc] init];
   subView.frame=CGRectMake(180, 120, 150, 150);
   pickerView = [[UIPickerView alloc] init];

    pickerView.showsSelectionIndicator = YES;
    pickerView.dataSource = self;
    pickerView.delegate = self;
    pickerView.frame=CGRectMake(190, 130, 100, 100);
    subView.backgroundColor=[UIColor blackColor];
    [subView  addSubview:pickerView];
    [self.view addSubview:subView];
    [pickerView release];

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

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    NSLog(@"selected object is %@",[arraypref objectAtIndex:row]);
    //[pickerView ]
    //mlabel.text=  [arrayNo objectAtIndex:row];
}

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

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

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

Ответы [ 3 ]

1 голос
/ 26 мая 2011

Лучше вы используете

, чтобы скрыть

pickerview.hidden=YES;

, чтобы показать

pickerview.hidden=NO;
0 голосов
/ 26 мая 2011

в вашем коде subView.frame=CGRectMake(180, 120, 150, 150); и pickerView.frame=CGRectMake(190, 130, 100, 100);

представление выбора - это подпредставление вашего 'subView'

здесь кадр вида выбора начинается с границ подпредставления, т. Е. Источник x равен 190. Но ширина подпредставления составляет всего 150.

поэтому правильный код

pickerView.frame=CGRectMake(0, 0, 100, 100);

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

0 голосов
/ 26 мая 2011

Попробуйте изменить frame из pickerView на

pickerView.frame = CGRectMake(10,10,100,100);
...