这是我的代码,我无法处理按钮选择器。
- (UIView *)pickerView:(UIPickerView *)pickerView
viewForRow:(NSInteger)row
forComponent:(NSInteger)component
reusingView:(UIView *)view {
if(view == nil) {
view = [[[UIView alloc] init] autorelease];
}
[view setFrame:CGRectMake(0, 0, 320, 44)];
UIButton *manageButton = (UIButton *)[view viewWithTag:TAG_MANAGE + row];
UILabel *descTypeLabel = (UILabel *) [view viewWithTag:TAG_DESCTYPE_LABEL + row];
if(manageButton == nil && row != 0) {
//CGRect frame = CGRectMake(210, 7, 90, 30);
CGRect frame = CGRectMake(0, 7, view.frame.size.width, 30);
manageButton = [UIButton buttonWithType:UIButtonTypeCustom];
manageButton.frame = frame;
[manageButton setTitle:@"Manage" forState:UIControlStateNormal];
[manageButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[manageButton setBackgroundImage:[[UIImage imageNamed:@"blackButton.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(8, 8, 8, 8)] forState:UIControlStateNormal];
manageButton.tag = TAG_MANAGE + row;
[view addSubview:manageButton];
}
if(descTypeLabel == Nil) {
descTypeLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 0, 190, 44)];
descTypeLabel.layer.borderColor = [UIColor greenColor].CGColor;
descTypeLabel.layer.borderWidth = 1.0;
descTypeLabel.backgroundColor = [UIColor clearColor];
descTypeLabel.tag = TAG_DESCTYPE_LABEL + row;
[descTypeLabel setText:[descTypes objectAtIndex:row]];
[view addSubview:descTypeLabel];
[descTypeLabel release];
}
[manageButton addTarget:self action:@selector(managePressed:) forControlEvents:UIControlEventTouchUpInside];
return view;
}
-(void) managePressed:(UIButton *) sender {
//This selector is not called on manage button tap!
}
答案 0 :(得分:0)
我认为您应该在将manageButton
添加到pickerView
之前添加选择器
只需移动这行代码:
[manageButton addTarget:self action:@selector(managePressed:) forControlEvents:UIControlEventTouchUpInside];
在这行代码之前:
[view addSubview:manageButton];
我希望这会有所帮助。
答案 1 :(得分:0)
我找到了解决方案。显然,根据您的设计,有一个带有完成按钮的工具栏可能是不可取的,因此在UIPickerView单元格上添加“不可见”完成按钮的一个好方法是:
// Instantiate an UIImagePicker into your class
@interface myView () {
UIPickerView *_picker;
}
@end
// alloc/init the picker of your class and a UITapGestureRecognizer
- (void)initPicker {
_picker = [[UIPickerView alloc] init];
[_picker addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(dismissPicker)]];
}
// method called when the user taps on the UIPickerView.
// The normal behaviour is to use the current selected row as the one wanted by the user.
- (void)dismissPicker {
NSInterger selectedRow = [_picker selectedRowInComponent:0];
// and now use the data and dismiss the picker the way you like the most
}
那是所有人; p