2013-10-08 3 views
4

Вот мой код, и я не могу справиться с селектором кнопок.Кнопка в PickerView не работает iOS 7

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

Я думаю, вы должны добавить селектор в вашем manageButton перед добавлением его к pickerView.
Просто переместите эту строку кода:

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

До этой строки кода:

[view addSubview:manageButton]; 

Я надеюсь, что это помогает.

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 
} 

Это все люди, р

Смежные вопросы