-1

我定义了一个点函数

typedef void (^ButtonClick)(id sender);

我想在按钮单击时调用它(UIButton addTarget 调用 ^ButtonClick 函数),但它可以找到指针。

-(void)addRightButton:(UIImage*)btnImage click:(ButtonClick)click{
    UIButton *modalViewButton = [UIButton buttonWithType:UIButtonTypeCustom];

    [modalViewButton addTarget:self
      action:@selector(click) // <==== could not find pointer.Pointer errors
          forControlEvents:UIControlEventTouchUpInside];
    // other code to add modelViewButton on View.....
}

-(void)test
{ 
    [self addRightButton:[UIImage imageNamed:@"btn_shuaxin_1.png"] click:^(id sender) {
         NSLog(@"it is test code");//<===never called
    }];
}

怎么去SEL?

4

1 回答 1

0

你不能得到这样的选择器。(要在运行时获取选择器,请使用该sel_getUid()函数)。此外,您混淆了选择器和块。你想要什么是可能的,但使用不同的方法:

- (void)addRightButton:(UIImage *)btnImage click:(ButtonClick)click{
    UIButton *modalViewButton = [UIButton buttonWithType:UIButtonTypeCustom];

    [modalViewButton addTarget:click
        action:@selector(invoke)
        forControlEvents:UIControlEventTouchUpInside];
}

- (void)test
{ 
    [self addRightButton:[UIImage imageNamed:@"btn_shuaxin_1.png"] click:^{
        NSLog(@"it is test code");
    }];
}
于 2012-11-07T05:53:33.737 回答