我有一个当用户单击按钮时打开的CCScrollView。我还想“重新初始化”处理这个CCScrollView的UI元素的类。我通过调用[CCBReader load:@"Shop"]; Shop作为这个CCScrollView的自定义类来实现这一点。Shop设置CCScrollView的所有标签和按钮。
打开CCScrollView (位于MainScene中):
-(void)openShop
{
[CCBReader loadAsScene:@"Shop"];
CCScrollView *scroll = [[CCScrollView alloc]initWithContentNode:shopNode];
[shopNode setContentSizeInPoints:(CGSizeMake(320, 1000))];
[scrollContainer addChild:scroll z:0 name:@"scrollName"];
[scroll setContentSizeInPoints:(CGSizeMake(320.0, 370.0))];
[scroll setHorizontalScrollEnabled:NO];
[scroll setPosition:(CGPointMake(0, 70))];
}Shop的初始化方法
-(id)init
{
if ([super init]) {
if (i == 0) {
cell1.string = @"hello";
i++;
} else {
cell1.string = @"ffff";
}
}
return self;
}所以我想要做的是,当我第一次运行程序,所有的类都被初始化时,cell1的字符串是"hello",它将1加到i。然后,当我打开CCScrollView时,Shop应该再次初始化,因为i是1,cell的字符串应该变成"ffff“。问题是,它不会改变我可以放在显示随机文本的NSLog中的cell1.的字符串,这将非常好地工作,但是cell1的字符串不会改变,为什么呢?
发布于 2014-11-08 17:18:25
每次打开滚动视图时,都会创建一个新的Shop实例。之前的'i‘值设置为1的实例此时会被释放,所以每次重新开始时i都是0。
快速的解决方法是让i成为@接口之外的一个静态变量。我强烈建议将其重命名。
static int index = 0;
-(id)init
{
if ([super init]) {
if (index == 0) {
cell1.string = @"hello";
index++;
} else {
cell1.string = @"ffff";
}
}
return self;
}https://stackoverflow.com/questions/26811459
复制相似问题