alayer.m
-(void)abuttonclicked:(id)sender
{
blayer *blayer = [blayer node];
blayer.position = ccp(1,1);
[self addChild:blayer];
}
blayer.m有一个名为bbutton的按钮和名为bstring的字符串值,我想点击b按钮,它会关闭blayer(从alayer中删除blayer),并将字符串值bstring传递给alayer,请看下面的代码,
-(void)bbuttonclicked:(id)sender
{
// how can do here to close its self(remove its self from alayer), and pass the bstring to alayer?
}
感谢。
PS。我可以使用NSUserDefault传递字符串值,但我认为这是一种不好的方法,是否有另一种传递值的方法?
答案 0 :(得分:0)
也许传递你可以声明的字符串并在ALayer.h / .m
中实现一个属性 @property(nonatomic,copy) NSString *stringFromLayerB;
在bButtonClicked时删除bLayer:
-(void)bbuttonclicked:(id)sender
{
ALayer *lay = (ALayer*) self.parent;
lay.stringFromLayerB = @"Whatever you want to set";
[self removeFromParentAndCleanup:YES];
}
还有其他方法可以做到这一点。您可以实现回调机制,使用通知,某种代理协议绑定BLayer和ALayer。一切都取决于你的真实(未说明的)要求。
答案 1 :(得分:0)
考虑到您的情况,我认为最好使用 NSNotificationCenter 。 您可以在点按按钮时发布blayer的通知,并在图层中添加观察者以准确回应。
在alayer的init中添加[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receivedNotification:) name:@"BlayerNotification" object:nil];
,在其dealloc中添加[[NSNotificationCenter defaultCenter] removeObserver:self];
。
它的选择器如:
- (void)receivedNotification:(NSNotification *)notification {
NSString *string = (NSString *)notification.object;
NSLog (@"String received %@", string);
}
现在,您可以在点击hte按钮时发布blayer的通知:
-(void)bbuttonclicked:(id)sender {
[[NSNotificationCenter defaultCenter] postNotificationName:@"BlayerNotification" object:self];
[self removeFromParentAndCleanup:YES];
}