2014-01-05 56 views
0

有沒有人可以幫我解決問題?我正在幫助一個朋友玩遊戲,但我們一直在堅持如何覆蓋現有的整數。問題在於xCode中的Objective-C。覆蓋viewDidLoad中的現有值

有兩個viewControllers frontPage和secondPage。在frontPage中,我們將100分配給viewDidLoad方法中的startingScore。然後我們出去到第二頁,從第二頁開始我們回來。我們希望使用frontPage中第二頁的startingScore,但它會被viewDidLoad覆蓋。

這是我們必須從FrontPage(或第一視圖控制器):

- (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); 
} 

任何人可以幫助我嗎?

謝謝,

Sam x。

+0

嗨刪除startingScore = 500; ..你可以請告訴我們你是如何宣稱startingScore? –

+0

嗨,當然這是來自frontPage viewController文件:property(nonatomic)int startingScore; .h文件和.m文件:synthesize startingScore;謝謝, – user3162972

+1

如果將數據模型移出視圖控制器,這將更容易管理。創建一個單獨的課程來跟蹤分數,並讓您的欠款管理員檢索並顯示分數。 –

回答

0

我想我線索。在這裏你正在改變價值startingScore 2次。首先,您在viewDidLoad中將其值設置爲500。然後在-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender方法中,您將從500更改爲5000。現在,當您回到frontpage時,viewDidLoad方法將再次被調用爲frontPage。因此startingscore的值再次變成500.您可以使用NSLog函數來檢查它。我很確定這是發生在這裏。

建議糾正問題

  1. frontPage
  2. init啓動startingScore從另一個類管理startingScore

編輯只需粘貼下面的代碼寫在VC的FrontPage &從您viewDidLoad方法

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

嗨,是的,這就是發生了什麼,但我們無法解決如何解決這個問題? Sam x – user3162972

+0

我已經更新了答案。檢查它並讓我知道 –

+0

感謝大家的幫助。我會讓你知道我們如何繼續。 Sam x。 – user3162972

1

如果你想startingScore先創建並從那時起其他地方管理的頭版視圖控制器時,被設置爲100,你可以移動的startingScore初始化到您的init功能:

- (id)init 
{ 
    if(self = [super init]) { 
     // ... 
     startingScore = 100; 
    } 
    return self; 
} 
+0

謝謝,上面的代碼會在我們的例子secondPage中被調用? Sam x – user3162972

+0

否....必須用FrontPage編寫。首頁初始化方法 –

+0

@ user3162972我已經更新了答案,以便更清楚地看到代碼在frontPage'init'方法中。 – godel9