-1

ポイントの関数を定義します

typedef void (^ButtonClick)(id sender);

ボタンがクリックされたときにそれを呼び出したい(^ButtonClick関数を呼び出すUIButton addTarget)が、ポインターを見つけることができました。

-(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 に答える