2012-02-01 46 views
0

簡而言之,我已經構建了一個應用程序,該應用程序在沒有導航控制器的情況下啓動,因此一切都通過ViewController進行控制。自從添加導航控制器以來,我添加了一個按鈕,從我的ViewController中翻轉到主導航控制器窗口。但是,當我按下按鈕時,它將重新加載與導航欄相同的窗口,然後跨越頂部(我將它隱藏在原始視圖中)。如果我再次按下相同的按鈕,則會加載正確的視圖。我做錯了什麼導致這個循環?下面帶有NavigationController的ViewController循環到自身

-(IBAction) btnSettings_Clicked: (id) sender { 
self.navigationController.navigationBarHidden = FALSE; 

[UIView beginAnimations:@"Flip View" context:nil]; 
[UIView setAnimationDuration:1.25]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
MyAppDelegate* appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate]; 

[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:[self.navigationController view] cache:YES]; 
[UIView commitAnimations]; 

[appDelegate.navigationController popViewControllerAnimated:NO]; } 

回答

0

如果這個代碼是在ViewController中,正如你說的,這個控制器不推導航控制器上,那麼錯誤是:

[self.navigationController view] ; 

因爲有沒有自我導航控制器。您必須將其替換爲:

[appDelegate.navigationController view] ; 

正如我asume那是使用正確的導航控制器。

然後,你爲什麼要彈出頂部視圖控制器?如果你想刪除self.view,那麼你只需要這樣做:

[self.view removeFromSuperview]; 
0

我的按鈕的代碼,我相信這是此行

[self.navigationController view] 

您應該設置動畫要展示,而不是當前控制器的控制器。

相關問題