我正在尝试将一个块分配给一个按钮对象,这样每次按下一个按钮就会执行该块。我有以下定义的按钮子类,它为我创建的每个唯一按钮保存块。
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:]:无法识别的选择器发送到实例...
不确定我做错了什么因为块对我来说是新的。我认为这是一种很好的方法,可以使缩略图响应触摸,然后在另一个视图控制器中转换为完整大小的图像。现在我不确定。
答案 0 :(得分:1)
此:
PhotoButton* photoButton = [UIButton buttonWithType:UIButtonTypeCustom];
应该是:
PhotoButton* photoButton = [PhotoButton buttonWithType:UIButtonTypeCustom];
您正在创建UIButton
的实例,而不是PhotoButton