2012-07-23 43 views
0

我正在使用pushViewController在我的應用程序中推送視圖。按後退按鈕約95%的時間就像你期望的那樣。但是,如果我儘可能快地進出視野,我會遇到一種情況,即頂部欄像流行音一樣移動,但視圖顯示。在這種狀態下,我剩下一個後退按鈕,(在正常操作中,我已將該按鈕的文本更改爲「取消」)。按下後會再次對頂部條形進行動畫處理,然後我在頂部條中沒有任何按鈕,並且我被卡在視圖中。pushViewController後跟'後退'按鈕有時不彈出視圖

你知道這裏可能會發生什麼嗎?這裏有一些更多的細節:

副視點稱這些一次或兩次:

[[UIApplication sharedApplication] beginIgnoringInteractionEvents]; 
[[UIApplication sharedApplication] endIgnoringInteractionEvents]; 

也子視圖延伸的BaseViewController。在這個基本控制器內部,所有的視圖方法都被重載(它們只是稱爲超級)。這可能是有趣的一個是:

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    [self customizeNavigationBar]; 
} 

- (void)customizeNavigationBar 
{ 
    [self.navigationController.navigationBar setTintColor:UIColorFromRGB(kNavigationBackgroundColor)]; 
    UIBarButtonItem *backButton_ = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"ID_BUTTON_BACK", @"") style:UIBarButtonItemStyleBordered target:self action:nil]; 
    self.navigationItem.backBarButtonItem = backButton_; 
    [backButton_ release]; 

}

請讓我還是知道,如果你需要更多的代碼,如果我能更好地解釋事情。

---編輯---- 我也打電話給谷歌分析在視圖中會出現。我記得在我的應用程序這引起其他問題:

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 

    NSError *error; 
    if (![[GANTracker sharedTracker] trackPageview:@"/app_new_page" 
        withError:&error]) { } 
} 

該代碼被放在我的實際視圖(不BaseViewController)。

+0

您是否試過使用標準後退按鈕而不是定義自己的後退按鈕? – 2012-07-23 11:39:38

+0

可能是導航堆棧已損壞。例如:你在viewDidLoad中推入了另一個視圖控制器 – NeverBe 2012-07-23 14:07:33

回答

1

我發現了這個問題。問題在於我在viewDidLoad中調用setNavigationBarHidden:NO with animated:NO來顯示沒有動畫的導航欄,但使用pushViewContoller和動畫:YES。

----- -----原本

[self.navigationController pushViewController:controller animated:YES]; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [self.navigationController setNavigationBarHidden:NO animated:NO]; 
} 

的解決方案是從viewDidLoad中除去setNavigationBarHidden並將其移到viewWillAppear中,並以動畫它同視圖是動畫的。由於我的導航欄是即時顯示的,因此可能在視圖控制器完成動畫(推入堆棧)之前按回,導致所有這些問題。

----- -----解

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    [self.navigationController setNavigationBarHidden:NO animated:animated]; 
} 

感謝您的幫助傢伙!