2013-11-21 67 views
1

所以我試圖完成這個iPhone應用程序,我開始幾年前。無論如何,我有一個選項菜單,您可以從中創建自定義級別(轉到另一個視圖)。然後當我回到主菜單,然後選擇菜單時,它只是顯示一個黑屏。iPhone應用程序重複使用視圖顯示黑屏

// shows options menu, works the first time 
-(void) options : (id) sender{ 
    [self.menuViewController.view removeFromSuperview]; 
    [self.bg.view removeFromSuperview]; 
    [self transition:self.view :navController.view]; 
} 

// goes to custom built level 
- (void) createCustom : (int) colorCount : (int) width : (int) height : (int) shuffles : (int) partners : (ToggleMode) toggleMode : (BOOL) colorblind{ 
    self.gameViewController.isCustom = true; 
    self.gameViewController.width = width; 
    self.gameViewController.height = height; 
    self.gameViewController.shuffles = shuffles; 
    self.gameViewController.partners = partners; 
    self.gameViewController.toggleMode = toggleMode; 
    self.gameViewController.colorCount = colorCount; 

    srandom(arc4random()); 

    [self.navController setNavigationBarHidden:true]; 
    [self.gameViewController goToLevel]; 

    [self transition:self.optionsMenu.customLevel.view : gameViewController.view]; 
} 

- (void) transition : (UIView *) fromView : (UIView *) toView{ 
    [UIView transitionFromView:fromView toView:toView duration:1.0 options:UIViewAnimationOptionTransitionFlipFromRight completion:NULL]; 
} 

當我打印出涉及的對象時,它們似乎仍然存在,所以我不知道它爲什麼只是顯示黑色。請幫我完成這個程序!

+0

我開始了一個項目,我希望看到它。如果我從不嘗試,我怎麼能學會我喜歡或不喜歡的東西? – Andrew

+0

這是編輯的最佳理由我** ** EVER **看到在stackoverflow – alexgophermix

+0

只是調試你的代碼,看看你有沒有在viewDidLoad寫任何東西,並推後你是POP POP然後它不會來viewDidLoad爲你有使用viewWillAppear ..在viewWillAppear中調用你的方法並看看 –

回答

0

爲什麼不使用ModalViewController顯示選項菜單?它將顯示在你現有的ViewController之上,並且不會解除/釋放它。這也將消除在轉換之前手動刪除視圖和視圖控制器的需要,這可能是導致黑屏問題的原因。您可以在此模式上添加一個按鈕,以便在用戶查看完選項後關閉該按鈕。

此外,作爲目標c上的一般要點,爲了讓您的生活更輕鬆,您應該按照命名方法的正確格式。這涉及在每個參數之前放置參數的名稱,以便更方便地調用該方法。舉個例子:

- (void)createCustom:(int)colorCount 
        :(int)width 
        :(int)height 
        :(int)shuffles 
        :(int)partners 
        :(ToggleMode)toggleMode 
        :(BOOL)colorblind { 
} 

會變成這樣的:

- (void)createCustomColorCount:(int)colorCount 
           withWidth:(int)width 
           withHeight:(int)height 
           withNumberOfShuffles:(int)shuffles 
           WithNumberOfPartners:(int)partners 
           withToggleMode:(ToggleMode)toggleMode 
           setColorBlind:(BOOL)colorblind { 
} 

爲了說明爲什麼這是有幫助的,這裏是你會怎麼稱呼你的方法的例子:

[self createCustom:0 
        :100 
        :100 
        :5 
        :5 
        :nil 
        :NO]; 

與:

[self createCustomColorCount:0 
        withWidth:100 
        withHeight:100 
     withNumberOfShuffles:5 
     WithNumberOfPartners:5 
       withToggleMode:nil 
       setColorBlind:NO]; 

因爲你c用第二種方法來看,更清楚每個參數值對應的是什麼,而不必回到該方法的實施。