Отображение UIPickerView при нажатии кнопки - PullRequest
0 голосов
/ 13 января 2012

В шапке полностью объясняется, чем я пытаюсь управлять в данный момент. Коротко говоря, мне понравился пример из здесь . Есть только одна проблема, в этом примере используется UIDatePicker вместо обычного UIPickerView. Моя проблема в том, что я не могу ввести свой UIPickerView с данными из NSMutableArray. Я попытался сделать это обычным способом, используя три основных метода, чтобы заставить «барабан» работать.

Теперь в viewDidLoad: self.uiPickerViewData = [[NSMutableArray alloc] initWithObjects: @ "One", @ "Two", nil];

//when tapping on Set Quality button
- (IBAction)setQuality:(id)sender 
{

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

CGRect pickerFrame=CGRectMake(0, 44, 0, 0);
qualityPicker=[[UIPickerView alloc]initWithFrame:pickerFrame];
qualityPicker.delegate=self;
[actionSheet addSubview:qualityPicker];

[qualityPicker release];

UIToolbar *toolBar=[[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, actionSheet.bounds.size.width, 44)];
[toolBar setBarStyle:UIBarStyleDefault];
[toolBar sizeToFit];

UIBarButtonItem *spacer=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
UIBarButtonItem *setButton=[[UIBarButtonItem alloc]initWithTitle:@"Set" style:UIBarButtonSystemItemCancel target:self action:@selector(setQualityIntoDB)];
UIBarButtonItem *cancelButton=[[UIBarButtonItem alloc]initWithTitle:@"Cancel" style:UIBarButtonSystemItemCancel target:self action:@selector(cancel)];

[toolBar setItems:[NSArray arrayWithObjects:spacer,setButton,cancelButton, nil]animated:NO];
[spacer release];
[setButton release];
[cancelButton release];

[actionSheet addSubview:toolBar];
[toolBar release];

[actionSheet showInView:self.view];
[actionSheet setBounds:CGRectMake(0, 0, 320, 485)];
}

И предметы первой необходимости, которые не принесли мне ожидаемого результата.

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

- (NSInteger)numberOfRowsInComponent:(NSInteger)component
{
   return [uiPickerViewData count];
}

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

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
// Will be properly implemented later

DBAccess *access=[[DBAccess alloc]init];
[access closeDataBase];
[access release];
}

Я получаю UIPickerView пустым. Где проблема?

Ответы [ 2 ]

1 голос
/ 13 января 2012

Используйте эти методы здесь после создания средства выбора и панели инструментов вне видимости под видом (координаты = (0,640)):

- (void)showPicker{

[UIView beginAnimations:@"picker" context:nil];
[UIView setAnimationDuration:0.5];

    picker.transform = CGAffineTransformMakeTranslation(0,- pickerHeight);
    pickerToolbar.transform = CGAffineTransformMakeTranslation(0, - pickerHeight - toolbarHeight);

[UIView commitAnimations];  }

-(void)hidePicker{
[UIView beginAnimations:@"picker" context:nil];
[UIView setAnimationDuration:0.5];

picker.transform = CGAffineTransformIdentity;
pickerToolbar.transform = CGAffineTransformIdentity;

[UIView commitAnimations]; }

затем добавьте showPicker как действие для вашей кнопки и hidePicker как действие для чего-то еще, что вы хотите ..

0 голосов
/ 13 января 2012
-(void)viewDidLoad
{     PickerList = [[NSMutableArray alloc] init];
            SecondPickerList = [[NSMutableArray alloc]initWithObjects:@"0.0 cm",@"0.1 cm",@"0.2 cm",@"0.3 cm",@"0.4 cm",@"0.5 cm",@"0.6 cm",@"0.7 cm",@"0.8 cm",@"0.9 cm", nil];        

            for(int i=0;i<210;i++)
            {

                [PickerList addObject:[NSString stringWithFormat:@"%i cm",i]];
            }
  [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
}

Я имею в виду, что вы должны разместить свой Mutablearray в Didload или в App Delegate ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...