那里有人可以帮助我解决问题吗?我正在帮助一个朋友玩游戏,我们一直在研究如何覆盖现有的整数。问题出在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功能进行检查。我很确定这就是这里发生的事情。

解决问题的建议


startingScoreinit中启动frontPage
从另一个班级管理startingScore


编辑只需将下面编写的代码粘贴到FrontPage的VC中,然后从startingScore = 500;方法中删除viewDidLoad

- (id)init
{
    if(self = [super init])
 {
        startingScore = 500;
    }
    return self;
}

10-07 22:48