2012-05-09 58 views
4

所以我有一個containerView控制器,基本上像splitViewController行爲。UINavigationController裏面的ContainerViewController popView的時髦

我想添加一個UINavigationController裏面的containerViewController,它工作得很好。

我在故事板中創建了一個UINavigationController,其中有一串UIViewControllers連接到它,所有這些都通過'push'segues連接在一起。我從故事板中獲取此NavigationController,並通過代碼將其粘貼到ContainerViewController中。然後它顯示NavigationController應該在的位置,我可以單擊按鈕,並且推動畫動畫只發生在ContainerViewController的NavigationController框架內。

但是,如果我從我的NavigationController上的代碼調用popViewController,它將動畫化整個ContainerViewController。我不想要的,我希望它只能爲NavigationController設置動畫。

有誰知道它爲什麼這樣做?

當你在一個ContainerViewController中有一個UINavigationController,然後你可以在NavigationController上使用popViewController時,你如何使它只動畫UINavigationController而不是它所駐留的整個ContainerViewController?

+2

你有沒有找到解決方案? – endy

回答

1

我也有這個問題。這也影響了我的推動。我的工作是使用代碼而不是故事板segues。

- (void) switchToView:(NSString *)identifier { 
    UIViewController *target = [self getOrCreateViewController:identifier]; 
    [self switchToViewController:target identifier:identifier]; 
} 

// If you need to interact with the VC before it is pushed break it into 2 step process 
- (UIViewController *) getOrCreateViewController:(NSString *)identifier { 
    NSArray *children = [self.viewControllers filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"restorationIdentifier == %@", identifier, nil]]; 
    UIViewController *target = (children.count > 0 ? children[0] : [self.storyboard instantiateViewControllerWithIdentifier:identifier]); 
    return target; 
} 

// For my use case, I always animate via push. Could modify this to pop/push as appropriate 
- (void) switchToViewController:(UIViewController *)target identifier:(NSString *)identifier { 
    [self setViewControllers:[self.viewControllers filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"restorationIdentifier != %@", identifier, nil]] animated:NO]; 
    [self pushViewController:target animated:YES]; 

} 

有點fugly解決方法我知道...希望我找到更好的答案(在這裏搜索一個)。 :-)

+0

謝謝!這很好。不過,希望這將有可能在未來的故事板中直接進行。 :-) – beta

相關問題