странный вывод для UIPickerView - PullRequest
0 голосов
/ 28 апреля 2011

У меня есть приложение на основе вкладок, мне нужно, чтобы при нажатии на кнопку окно выбора отображалось как лист действий

Я использую следующий код

-(IBAction)DisplayPicker:(id)sender{

    UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:nil cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil];

    [actionSheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent];  
    CGRect pickerFrame = CGRectMake(0, 40, 20, 20);  
    UIPickerView *pickerView = [[UIPickerView alloc] initWithFrame:pickerFrame];
    pickerView.showsSelectionIndicator = YES; 
    pickerView.dataSource = self; 
    pickerView.delegate = self;  
    [actionSheet addSubview:pickerView]; 
    [pickerView release];  
    UISegmentedControl *closeButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:@"Close"]]; 
    closeButton.momentary = YES;  
    closeButton.frame = CGRectMake(260, 7.0f, 50.0f, 30.0f); 
    closeButton.segmentedControlStyle = UISegmentedControlStyleBar; 
    closeButton.tintColor = [UIColor blackColor]; 
    [closeButton addTarget:self action:@selector(dismissActionSheet:) forControlEvents:UIControlEventValueChanged]; 
    [actionSheet addSubview:closeButton]; 
    [closeButton release];  
    [actionSheet showInView:self.view];  
    [actionSheet setBounds:CGRectMake(0, 0, 320, 485)]; 
}

проблема при нажатии на кнопку появляется строка, а не окно выбора

Как это решить пожалуйста, разрабатываю для ipad Я использую следующую функцию делегата

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

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    NSLog( [arrayNo objectAtIndex:row] )  ;
}

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

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

где я инициализировал arrayNo используя

arrayNo = [[NSMutableArray alloc] init];
[arrayNo addObject:@" 100 "];
[arrayNo addObject:@" 200 "];
[arrayNo addObject:@" 400 "];
[arrayNo addObject:@" 600 "];
[arrayNo addObject:@" 1000 "];

1 Ответ

0 голосов
/ 28 апреля 2011

Я думаю, что ваша рамка для сборщика недостаточно велика. Я обычно начинаю с 325 и 250 для сборщика и иду оттуда. Так что ваша линия для установки фрейма должна быть такой.

CGRect pickerFrame = CGRectMake(0, 40, 325, 250);  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...