0

如何重置一个uinavigationview当用户点击返回到它在标签栏应用如何当用户点击返回到它在标签栏应用

显示根控制器嘿重置uinavigationview显示根控制器,

只是想知道我会怎么做。我的委托中有navcontroller以及tabbar控制器,并且任何时候用户单击到另一个选项卡时,如果在单击包含uinavcontroller的选项卡时显示导航控制器上的rootview,它们将显示。

这是否有意义?

尼克

回答

2

[self.navigationController popToRootViewControllerAnimated:YES];

或没有,如果你不希望它动画。

这样,所有已缓存的看法仍然存在,即你不“删除/释放”根鉴于上述各方面的意见,除非navigationController认为有必要。

我希望这是你要找的..

+0

OK,只是想知道我触发,就像我怎么钩住到发生在用户每次点击选项卡上的特定选项卡视图按钮时包含uinavcontroller和堆栈的酒吧?谢谢你的时间。 – nickthedude 2010-02-25 23:44:41

+0

喜尼克 有必须实现使用TabBar工作中的UITabBar一样委托方法。这就是: - (空)的TabBar:(UITabBar *)的TabBar didSelectItem:(UITabBarItem *)的项目 这是一个有点硬,没有看到您的代码或知道,如果你没有在界面生成器或自己编的程序停止。但是,当用户点击标签栏时,上面的方法会被调用,因此您可以从中看到哪个标签栏被轻敲(UIBarItem),并且您需要访问正确的navigationController。 描述你是如何做到的设置或张贴一些代码,我来帮你得到它,“啪” :) – RickiG 2010-02-26 00:59:22

+0

有道理我会尽力impliment是今夜。我认为它应该工作。 – nickthedude 2010-02-26 22:47:27

0

当使用UITabBar委托方法,你必须延迟popToRootViewControllerAnimated电话。

-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item 
{ 
if ([self.selectedViewController isKindOfClass:[UINavigationController class]]) { 
    UINavigationController *view=(UINavigationController *)self.selectedViewController; 
    [view performSelector:@selector(popToRootViewControllerAnimated:) withObject:nil afterDelay:.5]; 
} 
} 
1

发生在appdelegate.m代码

if ([viewController isKindOfClass:[UINavigationController class]]) { 
    UINavigationController *nav = (UINavigationController *)viewController; 
    [nav popToRootViewControllerAnimated:NO]; 
} 
相关问题