Вопрос скрыть 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 ответа
Почему вы используете UIActionSheet
чтобы сделать это? Сделать UIPickerView
inputView
из UITextField
и сделать UIToolBar
inputAccessoryView
из UITextField
, Таким образом, вам нужно только become/resignFirstResponder
в текстовом поле, чтобы отклонить UIPickerView
а также UIToolBar
без грязного кода! Для получения дополнительной информации, UITextField Reference. Надеюсь, это поможет!
Я решил проблему. Просто удалите следующие две строки из приведенного выше кода:
[menu release];
menu=nil;