2011-12-29 69 views
0

如何在不使用導航控制器的情況下返回2個或3個視圖?這是在我的應用程序,有一個主菜單視圖。我想從所有其他頁面(從多個視圖)訪問該菜單。這如何實現?與 [self dismissModalViewControllerAnimated:YES];這不能實現,我想。 有人請幫我..在沒有導航控制器的情況下返回2個視圖

回答

2

我找到了解決辦法。

當然,你可以找到最明顯的地方,從對dismissModalViewControllerAnimated方法的UIViewController引用,以便閱讀解決方案......

如果連續幾個目前模態的視圖控制器,從而構建模式堆視圖控制器,在堆棧中較低視圖控制器上調用此方法會取消其立即子視圖控制器以及堆棧上該子級上的所有視圖控制器。發生這種情況時,只有最上面的視圖纔會以動畫形式被解散;任何中間視圖控制器都可以簡單地從堆棧中移除。最頂層的視圖使用其模式轉換樣式被解散,這可能與堆棧中較低視圖控制器使用的樣式不同。

因此,在目標視圖上調用dismissModalViewControllerAnimated就足夠了。我用下面的代碼:

[[[[[self parentViewController] parentViewController] parentViewController] parentViewController] dismissModalViewControllerAnimated:YES]; 

要回我家。

here

+0

:) thanq它的工作... – priya 2011-12-29 11:21:40

+0

你可能已經標記爲重複的問題,並在評論部分提供了鏈接。 – viral 2013-04-16 09:00:52

0

你想去「兩三個查看回」嗎?使用removeFromSuperview?或者你在說什麼ViewControllers

你在使用故事板嗎?

如果是這樣做:

- (void)showModalAssistantViewController 
{ 

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"AssistantStoryboard" bundle:nil]; 
AssistantRootViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"AssistantNavigationController"]; 
[viewController setModalPresentationStyle:UIModalPresentationFullScreen]; 
[viewController setModalTransitionStyle:UIModalTransitionStyleCoverVertical]; 
[self.navigationController presentModalViewController:viewController animated:YES]; 
//... or pushToViewController ... whatever, you get the point. 
} 
+0

在第三個屏幕,你想補充一點的代碼。使用簡單的視圖只有向前移動是通過[self presentModalViewController:firstview動畫:YES];想回去2和3意見 – priya 2011-12-29 08:50:33

2

複製「走出去2次回沒有導航控制器

嗯,我不知道這是否忽略了一點,但要做到這一點最簡單的方法是使用在導航控制器popToRootViewControllerAnimated

[self.navigationController popToRootViewControllerAnimated:TRUE]; 

所以,假如你有在A N系列的三個屏幕avigation Controller,並在第三個屏幕上,您想要「返回」按鈕將您帶回初始屏幕。不使用故事板或東西

-(void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // change the back button and add an event handler 
    self.navigationItem.leftBarButtonItem = 
    [[UIBarButtonItem alloc] initWithTitle:@"Back" 
            style:UIBarButtonItemStyleBordered 
            target:self 
            action:@selector(handleBack:)]; 
} 


-(void)handleBack:(id)sender 
{ 
    NSLog(@"About to go back to the first screen.."); 
    [self.navigationController popToRootViewControllerAnimated:TRUE]; 
} 
0
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:1] animated:YES]; 
相關問題