Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PickerView中的一个按钮在iOS 7中不起作用_Ios_Uipickerview - Fatal编程技术网

PickerView中的一个按钮在iOS 7中不起作用

PickerView中的一个按钮在iOS 7中不起作用,ios,uipickerview,Ios,Uipickerview,这是我的代码,我无法处理按钮选择器 - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view { if(view == nil) { view = [[[UIView alloc] init] autorelease

这是我的代码,我无法处理按钮选择器

- (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!

}

我认为在将选择器添加到
pickerView
之前,应该先将其添加到
管理按钮中
只需移动这行代码:

[manageButton addTarget:self action:@selector(managePressed:) forControlEvents:UIControlEventTouchUpInside];
[view addSubview:manageButton];
在这行代码之前:

[manageButton addTarget:self action:@selector(managePressed:) forControlEvents:UIControlEventTouchUpInside];
[view addSubview:manageButton];

我希望这能有所帮助。

我找到了解决办法。显然,根据您的设计,可能不希望工具栏具有“完成”按钮,因此在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