ios:如何从ViewController使用StoryBoards打开标签栏控制器
我这样做,并希望打开标签栏控制器从login页面,如果它是第一次,如果已经login然后通过login页面并打开标签栏控制器后Spalsh
意味着如果用户登陆应用第一时间sequesnce应该是这样的1. Splash 2.login页面3.在成功的login打开标签栏控制器有4个标签
如果用户已经login,然后1.飞溅2.标签栏控制器
我试图通过ViewDidLoad方法中的以下代码打开Tab Bar控制器
UITabBarController *tbc = [self.storyboard instantiateViewControllerWithIdentifier:@"TripMapViewer"]; tbc.selectedIndex=0; [self presentViewController:tbc animated:YES completion:nil];
但它给错误
ProjNew [1065:907] – [TripMapViewer setSelectedIndex:]:无法识别的select器发送到实例0x1d5600b0 2014-02-06 19:55:43.849
如果我删除tbc.selectedIndex = 0; 它什么都不做,并保持在这样的Splash屏幕上
UITabBarController *lbc = [self.storyboard instantiateViewControllerWithIdentifier:@"TripMapViewer"]; [self presentViewController:lbc animated:YES completion:nil];
请build议如何从View Controller中打开标签栏
看来TripMapViewer是一些Tab的Storyboard ID
,而不是UITabBarController
,请确认它并且可以正常工作
如下面的代码MainTabBar是UITabBarController
Storyboard ID
,它完美的工作
UITabBarController *tbc = [self.storyboard instantiateViewControllerWithIdentifier:@"MainTabBar"]; tbc.selectedIndex=0; [self presentViewController:tbc animated:YES completion:nil];
你不需要一个闪屏控制器,除非你正在animation的东西。 这个例子使用NSUserDefaults来记住它是否是第一次login。
在你的应用程序委托放置以下内容:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds]; UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; if(![[NSUserDefaults standardUserDefaults] dictionaryForKey:@"someKey"]){ UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"registerViewController"]; self.window.rootViewController = viewController; } else { UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"mainViewController"]; self.window.rootViewController = viewController; } [self.window makeKeyAndVisible]; return YES; }
如果你决定你必须有一个视图控制器的启animation面,那么你可以把相同的代码在那里。
被实例化的VC不是一个TabBarController解释崩溃的事实。 代码为常规vc提供故事板,将其转换为UITabBarController
,然后向其发送一条消息setSelectedIndex
:它不会实现,因为它不是一个标签栏控制器。
至less获得想要的位置的第一步是在故事板中将标识添加到标签栏控制器(TripMapViewer是其中一个标签)。 然后实例化,崩溃应该消失。
在devise层面,请在这里查看我的问题和答案,了解如何进行login和启动。