IOS 5阻止无法识别的选择器

时间:2012-01-05 02:47:40

标签: ios5 objective-c-blocks

我正在尝试将一个块分配给一个按钮对象,这样每次按下一个按钮就会执行该块。我有以下定义的按钮子类,它为我创建的每个唯一按钮保存块。

typedef void (^ButtonPressBlock)();
@interface PhotoButton : UIButton 
{
    ButtonPressBlock photoButtonPressed;
}
@property (copy) ButtonPressBlock photoButtonPressed;
@end

.m

中有@synthesize photoButtonPressed

在一个单独的UIViewController中我#import“PhotoButton.h”然后在那个视图控制器中我有一个创建按钮的方法。代码看起来像这样。

    PhotoButton* photoButton = [UIButton buttonWithType:UIButtonTypeCustom];
        photoButton.frame = CGRectMake(i, j, thumbSize+2, thumbSize+2);
        [photoButton setImage:photoThumb forState:UIControlStateNormal];
        [photoButton setAdjustsImageWhenHighlighted:NO];

        [photoButton setPhotoButtonPressed:^()
             {                                                    
             [self performSegueWithIdentifier:@"photoSegue" sender:aPhoto];
         }];

将块分配给photoButton在执行时失败

- [UIButton setPhotoButtonPressed:]:无法识别的选择器发送到实例...

不确定我做错了什么因为块对我来说是新的。我认为这是一种很好的方法,可以使缩略图响应触摸,然后在另一个视图控制器中转换为完整大小的图像。现在我不确定。

1 个答案:

答案 0 :(得分:1)

此:

PhotoButton* photoButton = [UIButton buttonWithType:UIButtonTypeCustom];

应该是:

PhotoButton* photoButton = [PhotoButton buttonWithType:UIButtonTypeCustom];

您正在创建UIButton的实例,而不是PhotoButton