我已经以编程方式创建了一个条形按钮项目。但是取消和完成的相应方法并未触发。
我以编程方式将选择器视图添加为文本字段的输入视图。在选择器视图的顶部,我放置了一个带有完成和取消按钮的工具栏。工具栏是pickerview的子视图。
这是我的代码:
(void)awakeFromNib
{
contactAgeRange = [[NSMutableArray alloc]init];
for (int i = 18; i <= 100; i++)
{
[contactAgeRange addObject:[NSNumber numberWithInt:i]];
}
personGender = [[NSMutableArray alloc]initWithObjects:@"Male", @"Female", nil];
[self initializePickerView];
self.cellTextField.userInteractionEnabled = NO;
self.cellTextField.delegate = self;
UIToolbar *toolBar= [[UIToolbar alloc] initWithFrame:CGRectMake(0,0,[UIScreen mainScreen].bounds.size.width,44)];
[toolBar setBarStyle:UIBarStyleBlackOpaque];
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:nil action:@selector(doneButtonPressed:)];
UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:nil action:@selector(cancelButtonPressed)];
UIBarButtonItem *space = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
[toolBar setItems:[NSArray arrayWithObjects:cancelButton, space, doneButton, nil]];
[self.pickerView addSubview:toolBar];
}
-(void) configureCell
{
switch (self.cellType) {
case ContactCellTypeAge:
self.cellTextField.inputView = self.pickerView;
break;
case ContactCellTypeGender:
self.cellTextField.inputView = self.pickerView;
break;
}
}
-(void)initializePickerView
{
self.pickerView = [[UIPickerView alloc]init];
self.pickerView.delegate = self;
self.pickerView.dataSource = self;
self.pickerView.showsSelectionIndicator = YES;
}
-(NSInteger) numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;
}
-(NSInteger) pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
switch (self.cellType)
{
case ContactCellTypeAge:
return [contactAgeRange count];
break;
case ContactCellTypeGender:
return [personGender count];
break;
}
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
if (self.cellType == ContactCellTypeAge)
{
NSString *age = [[contactAgeRange objectAtIndex:row] stringValue];
return age;
}
else if (self.cellType == ContactCellTypeGender)
{
NSString *gender = [personGender objectAtIndex:row];
return gender;
}
return nil;
}
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
if (self.cellType == ContactCellTypeAge)
{
pickerRowText = [[contactAgeRange objectAtIndex:row] stringValue];
//self.cellTextField.text = pickerRowText;
}
else if (self.cellType == ContactCellTypeGender)
{
pickerRowText = [personGender objectAtIndex:row];
//self.cellTextField.text = pickerRowText;
//[self.cellTextField endEditing:YES];
}
}
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
if (self.setNextResponderActionBlock)
{
self.setNextResponderActionBlock();
}
return YES;
}
-(void) cancelButtonPressed
{
[self.cellTextField resignFirstResponder];
}
-(void) doneButtonPressed : (id)sender
{
if (self.cellType == ContactCellTypeAge)
{
self.cellTextField.text = pickerRowText;
}
if (self.cellType == ContactCellTypeGender)
{
self.cellTextField.text = pickerRowText;
}
}
请帮我。提前致谢
最佳答案
在此方法中的configureCell添加self.cellTextField.inputAccessoryView = toolbar;