我需要一个很好的解释我如何处理UINavigationControllers和UITabBarControllers上iOS6.1故事板。
- 当我打开我的应用程序(第1的ViewController)我需要的,如果(FB登录=成功),它塞格斯到第二的ViewController自动跳转。 在这里,我想我不能使用
UINavigationController
像根,苹果的HIG不喜欢它。 - 我需要
UITabBarController
连接到3个UICollectionViewControllers
(为每一个一个标签)。 我必须把UITabBarController
像根? 如果是的话,我怎么能处理他们之间的其他Viewontrollers? 像这样: - 我需要每个CollectionViewController定制BarButtonItem(如“全部删除”,您可以在图像2上看到的),我需要使用一个
UINavigationController
为每一个?
让我们假设你乐于使用放松塞格斯(如果不是有很多种方法,而不做)。
1当我打开我的应用程序(第1的ViewController)我需要的,如果(FB登录=成功),它塞格斯到第二的ViewController自动跳转。 在这里,我想我不能使用像根一个UINavigationController,苹果的HIG不喜欢它。
你第一次VC(可以称之为loginVC)..
- 不应该被包含在导航控制器。
- 应设置为应用程序的initialViewController
你的第二个VC(可以称之为你的startVC)
- 应包含在导航控制器
-在导航控制器的身份检查,分配storyboardID: @"InitialNavController"
在应用程序委托,让我们来loggedIn
BOOL属性:
@property (nonatomic, assign) BOOL loggedIn;
现在,在LogInViewController ...
在viewDidAppear
检查,看看是否已经登录,如果是的话,立即浏览startVC:
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
if ([(AppDelegate*)[[UIApplication sharedApplication] delegate] loggedIn]) {
UINavigationController* navController =
[[self storyboard] instantiateViewControllerWithIdentifier:@"InitialNavController"];
[self presentViewController:navController
animated:NO
completion:nil];
}
}
重要的是,这是在viewDidLoad中放入viewDidAppear,而不是(例如) - 该SEGUE不会工作,除非最初的观点是正确的初始化和屏幕上。
做一个展开Segue公司(在其声明loginVC
的@interface
)... loginVC将目的地VC,如果用户注销。
- (IBAction)unwindOnLogout:(UIStoryboardSegue *)segue
{
[(AppDelegate*)[[UIApplication sharedApplication] delegate] setLoggedIn:NO];
}
( 校正-删除这条线:
[[self presentedViewController] dismissViewControllerAnimated:YES completion:nil];
我们不需要解雇作为SEGUE已经做好了幕后。 这是多余的和记录错误消息 )
在其他viewControllers,徘徊无论合适你可以做一个“退出”按钮。 按Ctrl键从该按钮在视图控制器在故事板底部的“退出”的符号,你将可以选择这种赛格瑞为开卷SEGUE。
2 I需要连接到3个UICollectionViewControllers(为每一个一个标签)一个的UITabBarController。 我必须把像根的UITabBarController? 如果是的话,我怎么能处理他们之间的其他Viewontrollers? 像这样:
我认为你正在试图制定出tabBarController如何与NavigationController在前面的viewController(startVC)。 答案是,它不应该 - 你真的不想嵌入标签栏VC在前面的导航控制器,因为它会创建一个标签栏的孩子viewControllers怪异的情况。
从startVC到tabBarVC导航应该是通过一个模式SEGUE,而不是推SEGUE。
你可以让另一开卷Segue公司在startVC,以方便您的tabBarController的viewControllers回报:
- (IBAction)unwindToInitialNavFromModal:(UIStoryboardSegue *)segue {
}
( 校正-除去这一行: [[self presentedViewController] dismissViewControllerAnimated:YES completion:nil];
该方法不需要任何内容,以执行所述解聘 )
3,我需要每个CollectionViewController定制BarButtonItem(如“全部删除”,您可以在图像2上看到的),我需要使用一个UINavigationController为每一个?
你会不会在默认情况下你的tabBarVC得到一个导航条。
你可以提供一个在两个方面
- 嵌入每个孩子的viewController在它自己的浏览器;
- 手动拖动导航栏,以每个孩子的viewController的场景。
无论是好的,它真的只是取决于你是否愿意导航到其他ViewControllers。
然后,您可以添加在左边或右边一个barButtonItem,最多可连接到initialVC的开卷赛格瑞(CTRL拖动到“退出”符号)。