Xcode Cocos 2D如何使用具有多个参数的选择器

时间:2013-03-23 04:25:37

标签: objective-c cocos2d-iphone selector

我正在尝试做这样的事情:

CCMenuItemImage *BuyButton = [CCMenuItemImage itemWithNormalImage:@"Buy.jpg" selectedImage:@"Buy.jpg" target:self selector:@selector(Function:cnt)];

由于某种原因,我无法将任何参数传递给函数'Function'。我花了很多时间研究这个,但我找到的唯一解决方案是使用对象ID,我宁愿不进入。这个按钮处于一个循环中,所以我不能只有另一个名为thats从其他地方获取参数的函数。

2 个答案:

答案 0 :(得分:2)

+ (id)itemWithNormalImage:selectedImage:target:selector:不支持带参数的选择器。如果要执行带参数的选择器,可以使用+ (id)itemWithNormalImage:selectedImage:block:代替。在块中只需运行您想要的任何代码:

__weak typeof(self) weakSelf = self;
[CCMenuItemImage itemWithNormalImage:@"Buy.jpg" selectedImage:@"Buy.jpg" block:^(id sender) {
    [weakSelf methodWithParameterOne:one two:two];
}];

答案 1 :(得分:0)

您无法按冒号selectors发送参数。

典型的例子是:

[self performSelector:@selector(myMethodWithObject:) withObject:myObject];

哪个电话

- (void)myMethodWithObject:(id)object;

同样你需要像上面那样做,可能是:

CCMenuItemImage *BuyButton = [CCMenuItemImage itemWithNormalImage:@"Buy.jpg" selectedImage:@"Buy.jpg" target:self selector:@selector(Function:) withObject:cnt];

您需要通过以下方式更改功能:

-(void)FunctionWithCnt:(<type>)cntObject;

然后使用@selector(FunctionWithCnt:)