0

在用户登出在我的应用程序的另一选项卡,我然后构造一些视图控制器和一个的UITabBarController即然后通过我的应用程序的其余部分持久的。下面是该代码:的UITabBarController和开关以编程

....... 
//construction of view controllers, standard 

NSMutableArray *topLevelControllers = [[[NSMutableArray alloc] init] autorelease]; 
[topLevelControllers addObject: paymentNavController]; 
[topLevelControllers addObject: customerNavController]; 
[topLevelControllers addObject: historyNavController];  

UITabBarController *tabBarController = [[[UITabBarController alloc] init] autorelease]; 
tabBarController.delegate = self; 
[tabBarController setViewControllers:topLevelControllers animated:NO]; 
tabBarController.selectedIndex = 1; 

所以后来可以说,在我的customerNavController我有一个表视图,我想用户转移到paymentNavController切换,切换tabBarController的选择指标为好。

所以,我怎么能,从它包含的视图控制器之一,访问该的UITabBarController?

回答

4

我最终使用了一种静态方法并在全球范围内存储标签栏,以便以后可以访问它。这是在一个名为“LoginViewController”

static id gGlobalInstanceTabBar = nil; 
+ (UITabBarController *) tabBarController 
{ 
    if (!gGlobalInstanceTabBar) 
    { 
     gGlobalInstanceTabBar = [[UITabBarController alloc] init]; 
    } 
    return gGlobalInstanceTabBar; 
} 

然后初始化我的导航控制器后,我访问了标签栏控制器这样并将其配置文件中声明:

UITabBarController *tabBarController = [LoginViewController tabBarController]; 

然后,我可以在任何地方访问它,编程接通它的观点:

UITabBarController *tabBar = [LoginViewController tabBarController]; 
//do anything with view controllers, pass values etc here before switching views 
[tabBar setSelectedIndex:1]; 
+0

它仍然没有与共享实例 – yunas 2013-03-07 15:37:24

+0

工作标签栏和标签栏控制器是两回事。 – Ricardo 2014-05-17 11:21:22

0

我假设你有一个AppDelegate中,正确吗?如果是这样,你有这样的代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  

[self.window addSubview:tabBarController.view]; 
[self.window makeKeyAndVisible]; 

return YES; 

}

然后,在你的逻辑,使用

[self.delegate ...] 

要跨越不同的控制器工作。在这里阅读详细信息: View Controller Programming

+0

井tabBarController未初始化直到后来在程序中,在用户登录后,我的应用程序委托使用在第一导航控制器,然后在另一个视图控制器启动tabBarController稍后编程。 – Buchannon 2011-05-09 13:30:41

2

任何控制器(然而在层次结构中它可能是深),其具有父/祖先的UITabBarController可以通过访问它[self tabBarController]

同一作品的UINavigationController与物业navigationController

相关问题