那里有人可以帮助我解决问题吗?我正在帮助一个朋友玩游戏,我们一直在研究如何覆盖现有的整数。问题出在xCode中的Objective-C。
有两个viewControllers frontPage和secondPage。在frontPage中,我们在viewDidLoad方法中将100分配给startingScore。然后我们转到secondPage,然后从secondPage返回。我们想使用frontPage中secondPage中的startingScore,但是它已被viewDidLoad覆盖。
这是我们从frontPage(或第一个View Controller)获得的内容:
- (void)viewDidLoad
{
startingScore = 100;
mylabel1.text = [NSString stringWithFormat:@"%d", startingScore];
[super viewDidLoad];
// Do any additional setup after loading the view.
NSLog(@"Current value of newscore is: %d",startingScore);
}
这是来自SecondViewController的代码:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
frontPage *destination = [segue destinationViewController];
destination.startingScore = 5000;
destination.mylabel2.text = [NSString stringWithFormat:@"%d", destination.startingScore];
NSLog(@"Current Value of destination.newscore is: %d",destination.startScore);
}
有谁能够帮助我?
谢谢,
山姆
最佳答案
我想我知道了。在这里,您要更改startingScore
的值2次。首先,在viewDidLoad
中将其值设置为500。然后,您将-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
方法从500更改为5000。现在,当您返回到frontpage
时,将再次为viewDidLoad
调用frontPage
方法。因此startingscore
的值再次变为500。您可以使用NSLog
功能进行检查。我很确定这就是这里发生的事情。
解决问题的建议
在startingScore
的init
中启动frontPage
从另一个班级管理startingScore
。
编辑只需将下面编写的代码粘贴到FrontPage
的VC中,然后从startingScore = 500;
方法中删除viewDidLoad
- (id)init
{
if(self = [super init])
{
startingScore = 500;
}
return self;
}