I'm using UIActionSheet to be called from different UITextview. Once as date picker and as list of values.
The second time is called values will mixed up with previous values.
Could someone please help with this issue.
- (void)viewDidLoad
{
pickerViewPopup = [[UIActionSheet alloc] initWithTitle:nil
delegate:self
cancelButtonTitle:nil
destructiveButtonTitle:nil
otherButtonTitles:nil];
pickerView = [[UIDatePicker alloc] initWithFrame: CGRectMake(0, 44, 320, 266)];
catPickerView = [[UIPickerView alloc]initWithFrame:CGRectMake(0, 44, 320, 266)];
[super viewDidLoad];
}
#pragma mark -
#pragma mark - TextField Delegate
- (void)textFieldDidBeginEditing:(UITextField *)aTextField{
[aTextField resignFirstResponder];
switch (aTextField.tag) {
case 1:
[self ShowDatePick];
break;
case 3:
[self ShowCategoryPick];
break;
default:
break;
}
}
-(void) ShowDatePick{
pickerView.datePickerMode = UIDatePickerModeDate;
//pickerView.hidden = NO;
pickerView.date = [NSDate date];
[pickerView addTarget:self action:@selector(updateTextField:) forControlEvents:UIControlEventValueChanged];
[_txtDate setInputView:pickerView];
UIToolbar *pickerToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
pickerToolbar.barStyle = UIBarStyleDefault;
[pickerToolbar sizeToFit];
NSMutableArray *barItems = [[NSMutableArray alloc] init];
UIBarButtonItem *space = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
[barItems addObject:space];
UIBarButtonItem *cancelBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneButtonPressed:)];
[barItems addObject:cancelBtn];
[pickerToolbar setItems:barItems animated:YES];
[pickerViewPopup addSubview:pickerToolbar];
[pickerViewPopup addSubview:pickerView];
//[self.view addSubview:pickerViewPopup];
[pickerViewPopup showInView:self.view];
[pickerViewPopup setBounds:CGRectMake(0,0,320, 464)];
}
-(void) ShowCategoryPick{
pickerArray = [[NSArray alloc]initWithObjects:@"Chess",
@"Cricket",@"Football",@"Tennis",@"Volleyball", nil];
catPickerView.dataSource = self;
catPickerView.delegate = self;
UIToolbar *pickerToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
pickerToolbar.barStyle = UIBarStyleDefault;
[pickerToolbar sizeToFit];
NSMutableArray *barItems = [[NSMutableArray alloc] init];
UIBarButtonItem *space = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
[barItems addObject:space];
UIBarButtonItem *cancelBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneButtonPressed:)];
[barItems addObject:cancelBtn];
[pickerToolbar setItems:barItems animated:YES];
[pickerViewPopup addSubview:pickerToolbar];
[pickerViewPopup addSubview:catPickerView];
[pickerViewPopup showInView:self.view];
[pickerViewPopup setBounds:CGRectMake(0,0,320, 464)];
}
You need remove previously added subview from your pickerViewPopup
before adding new one:
...
[catPickerView removeFromSuperView];
[pickerViewPopup addSubview:pickerView];
...
and
...
[pickerView removeFromSuperView];
[pickerViewPopup addSubview:catPickerView];
...