我想知道用什么样的技巧将视图控制器“推”到导航控制器堆栈(iOS)中
我有这个:
如果用户未登录,则显示视图A,然后显示B
如果用户已登录,则显示B
当我使用故事板时,如果用户已登录,我使用了performSegue,因此他直接进入B.但是使用此方法,导航控制器会在堆栈中获取视图A.
我想在一些虚空中弹出一个级别的堆栈(但我不知道该怎么做)
我还在考虑不将视图推入导航控制器堆栈(但我不知道该怎么做)
感谢
更新:
我试过这个:
//The view B
TabBarMain* mainViewController = [[TabBarMain alloc] init];
//If already logged in
if([username length] == 0)
{
NSArray *viewControllers = [NSArray arrayWithObject:mainViewController];
[self.navigationController setViewControllers:viewControllers animated:NO];
}
此代码的问题在于它向我显示黑屏(不会崩溃)。看来我需要初始化一些东西而且我的TabBarMain.m中什么都没有,我不知道该写些什么。此TabBarMain链接到故事板的标签栏控制器。
没有别的办法吗?
答案 0 :(得分:1)
在rootViewController的viewDidLoad中尝试使用此大小。
- (void)viewDidLoad
{
NSArray *viewControllers
if (logged) {
NSArray *viewControllers = [NSArray arrayWithObject:viewControllerB];
} else {
NSArray *viewControllers = [NSArray arrayWithObject:viewControllerA];
}
[self.navigationController setViewControllers:viewControllers animated:NO];
}
由于您的viewController在Storyboard中链接而未在代码中实例化,因此您需要从故事板中实例化它而不是空代码。确保标识符与故事板中ViewController的标识符相匹配。
TabBarMain *mainViewController = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:NULL] instantiateViewControllerWithIdentifier:@"tabBarMain"];