Вопрос скрыть uipickerview в iphone

введите описание изображения здесь

Я хочу отобразить UIPickerView с UIToolBar в верхней части pickerView с кнопкой "Готово" и "Отмена". Прикреплен снимок экрана для того же. У меня также есть контроллер панели вкладок в нижней части экрана, и я хочу отобразить pickerView поверх нижней панели, поэтому я я использую uipickerView внутри листа действий. Теперь моя проблема заключается в том, как отклонить этот pickerView при нажатии кнопки cancelButton, который добавлен в UIActionSheet?

Ниже приводится функция для отображения pickerView:

-(IBAction)setMile:(id)sender
   {
      menu = [[UIActionSheet alloc] initWithTitle:nil
                                                  delegate:self
                                         cancelButtonTitle:nil
                                    destructiveButtonTitle:nil
                                         otherButtonTitles:nil];
    // Add the picker
    UIPickerView *pickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0,55,0,0)];
    pickerView.delegate = self;
pickerView.showsSelectionIndicator = YES;    // note this is default to NO

UIToolbar *pickerToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0,0,320,44)];
pickerToolbar.barStyle = UIBarStyleBlackOpaque;
[pickerToolbar sizeToFit];

NSMutableArray *barItems = [[NSMutableArray alloc] init];


UIBarButtonItem *cancelBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(setMileCancel:)];
[barItems addObject:cancelBtn];
[cancelBtn release];
cancelBtn=nil;

UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
[barItems addObject:flexSpace];
[flexSpace release];
flexSpace=nil;

UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(setMileDone:)];
[barItems addObject:doneBtn];
[doneBtn release];
doneBtn=nil;


[pickerToolbar setItems:barItems animated:YES];
[barItems release];
barItems=nil;

[menu addSubview:pickerToolbar];
[menu addSubview:pickerView];
[menu showInView:self.view];
//[menu showFromTabBar:[[self tabBarController] tabBar]];  this code is not working
[menu setBounds:CGRectMake(0,0,320, 545)];
[pickerView release];
[menu release];
pickerView=nil;
menu=nil;
}

У меня есть следующий код при нажатии кнопки отмены

-(IBAction)setMileCancel:(id)sender
 {
   //[menu removeFromSuperview];
   [menu dismissWithClickedButtonIndex:0 animated:YES];
 }

3 ответа

Решение
 //   menu=nil;
 Please comment this line, then it will work

Почему вы используете UIActionSheet чтобы сделать это? Сделать UIPickerView inputView из UITextFieldи сделать UIToolBar inputAccessoryView из UITextField, Таким образом, вам нужно только become/resignFirstResponder в текстовом поле, чтобы отклонить UIPickerView а также UIToolBarбез грязного кода! Для получения дополнительной информации, UITextField Reference. Надеюсь, это поможет!

Я решил проблему. Просто удалите следующие две строки из приведенного выше кода:

[menu release];
menu=nil;
Другие вопросы по тегам