在启动时将TabBarViewController设置为AppDelegate中的Root View

时间:2014-11-17 19:54:52

标签: ios objective-c rootview

这个问题可能看起来有些愚蠢,但我现在一直在寻找答案,但我找不到答案。所以我正在开发一个在客户端之间集成Parse推送通知的应用程序。该应用程序在故事板中和应用程序中的某个点(在应用程序关闭时接收到推送)有一个UITabBarController(TabBarViewController作为自定义类)我必须将TabBarViewController设置为我的rootViewController以进行进一步操作,例如[tabBarController doSomething ];

总之,我试图显示我的TabBarViewController的第3个选项卡(索引:2)并执行TabBarViewController类中的函数,以在第3个选项卡的视图中显示内容。

我正在尝试执行以下操作:

在didFinishLaunchingWithOptions:方法中的AppDelegate.m中:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
TabBarViewController* tabBarController = (TabBarViewController*)[storyboard instantiateViewControllerWithIdentifier:@"<StoryboardIDofTabBarViewController>"];
tabBarController.selectedIndex = 2;

self.window.rootViewController = tabBarController;
[self.window makeKeyAndVisible];

[tabBarController doSomething];    

我觉得解决方案需要授权,但我真的不知道如何实现它。我的控制器没有嵌入导航控制器中,因此我不确定是否可以推动tabController。

任何帮助将不胜感激。谢谢

1 个答案:

答案 0 :(得分:0)

这对我来说非常适合应用didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

AppDelegate.h

@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController;

AppDelegate.m

UIStoryboard *storyboard = [[UIStoryboard alloc] init];
storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];

UIViewController *tabBarControllerView = [storyboard instantiateViewControllerWithIdentifier:@"tabBarController"]; 
[self.window setRootViewController:tabBarControllerView];
tabBarController = (UITabBarController *)self.window.rootViewController;
tabBarController.delegate = (id)self;
tabBarController.selectedIndex = 2;

**验证&#34; instantiateViewControllerWithIdentifier&#34;匹配故事板中的storyBoard ID。希望这会有所帮助。

故事板的屏幕截图: enter image description here