-1

I've been trying to share information from one of my classes to another one (trying out something for Spritebuilder) and it's just. Not. Working.

I want to change the text of the label in the second class to a string I define in the first. Here is my code.

MainScene.h

@interface MainScene : CCNode
@property CCLabelTTF *lblChange;

-(void) _button;

@end

MainScene.m

#import "MainScene.h"
#import "StoryScene.h"
@implementation MainScene

-(void)_button {
    StartScene *startHold = [[StartScene alloc] init];
    [startHold.lblTwo setString:@"Hello World!"];
    NSLog(@"%@, this is the StoryScene", startHold);
    NSLog(@"%@, this is the Main Scene", @"Yessss");
    NSString *filler = [startHold.lblTwo string];
    NSLog(@"%@",filler);
    CCScene *storyScene = [CCBReader loadAsScene:(@"StartScene")];
    [[CCDirector sharedDirector] replaceScene: storyScene];
}
@end

StoryScene.h

#import "CCNode.h"

@interface StartScene : CCNode
@property CCLabelTTF *lblTwo;

@end

StoryScene.m

#import "StoryScene.h"
@implementation StoryScene
@end

I've tried making StoryScene a property in the MainScene class, synthesizing pretty much everything, moving things around - but I cannot get that dogging lblTwo to log as anything, which prevents the Label text from changing (I think). Here is the relevant output I get in my log.

TheCaveOfMan[58721:1593076] <StartScene = 0x7fc2cfb31e40 | Name = (null)>, this is the StoryScene
2015-06-18 15:52:04.712 TheCaveOfMan[58721:1593076] Yessss, this is the Main Scene
2015-06-18 15:52:04.712 TheCaveOfMan[58721:1593076] <StartScene = 0x7fc2cfb31e40 | Name = (null)>, this is the label
2015-06-18 15:52:04.713 TheCaveOfMan[58721:1593076] (null)
2015-06-18 15:52:04.714 TheCaveOfMan[58721:1593076] CCBReader: Couldn't find member variable: lblTwo
2015-06-18 15:52:04.725 TheCaveOfMan[58721:1593076] cocos2d: surface size: 640x1136

I don't know why it can't find the lblTwo variable, and I don't know how to change the StoryScene's logging name to something that isn't (null), or how to give the lblTwo string something to hold. Help?

Misha Stone
  • 631
  • 7
  • 22

1 Answers1

1

At the second line, where you try to assign "Hello World", I think the lblTwo property might be uninitialised (so nil). You need to alloc and init the property before calling setString on it.

user1251560
  • 109
  • 7
  • I've tried adding `[[startHold.lblTwo alloc] init]` but I get 'No visible @interface for 'CCLabelTTF' declares the selector alloc'. – Misha Stone Jun 18 '15 at 23:31
  • Try startHold.lblTwo = [[CCLabelTTF alloc] initWithString: .........] ; or startHold.lblTwo = [CCLabelTTF labelWithString: ........]; Check out the documentation on how to use these: http://www.cocos2d-swift.org/docs/api/Classes/CCLabelTTF.html#//api/name/labelWithString:fontName:fontSize: – user1251560 Jun 19 '15 at 06:21