Ios6 如何处理UINavigationController和UITabbarController iOS 6.1
我需要一个很好的解释,我如何使用故事板处理iOS6.1上的UINavigationControllers和uitabarcontrollersIos6 如何处理UINavigationController和UITabbarController iOS 6.1,ios6,uinavigationcontroller,uitabbarcontroller,uibarbuttonitem,uicollectionview,Ios6,Uinavigationcontroller,Uitabbarcontroller,Uibarbuttonitem,Uicollectionview,我需要一个很好的解释,我如何使用故事板处理iOS6.1上的UINavigationControllers和uitabarcontrollers 当我加载我的应用程序(第一个ViewController)时,我需要(FB login=success),它会自动跳转到第二个ViewController。在这里,我想我不能像root那样使用UINavigationController,苹果的HIG不喜欢它。 我需要一个连接到3个UICollectionViewController的UIAbbarCo
UINavigationController
,苹果的HIG不喜欢它。
UIAbbarController
(每个控制器一个选项卡)。我必须把UITabBarController
像根一样放进去?如果是,如何处理它们之间的其他ViewController?这样地:
UINavigationController
让我们假设您很乐意使用“放松”分段(如果没有,有很多方法可以不用) 1当我加载我的应用程序(第一个ViewController)时,我需要(FB login=success)是否自动跳转到第二个ViewController。在这里,我想我不能使用像root这样的UINavigationController,苹果的HIG不喜欢它 你是第一个VC(我们称之为loginVC)
-不应包含在导航控制器中。
-应设置为应用程序的initialViewController 你的第二个VC(让我们称之为你的startVC)
-应包含在导航控制器中
-在该导航控制器的标识检查器中,分配情节提要ID:
@“InitialNavController”
在应用程序委托中,让我们使用一个loggedIn
BOOL属性:
@property (nonatomic, assign) BOOL loggedIn;
现在,在您的LogInViewController中
在<代码>视图显示中检查我们是否已登录,如果已登录,请立即导航到您的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];
}
}
重要的是要将其放置在ViewDidDisplay中,而不是(例如)viewDidLoad中-除非初始视图已正确初始化并在屏幕上显示,否则segue将无法工作
进行一个放松序列(并在loginVC
的@interface
中声明)…如果用户注销,loginVC将成为目标VC
- (IBAction)unwindOnLogout:(UIStoryboardSegue *)segue
{
[(AppDelegate*)[[UIApplication sharedApplication] delegate] setLoggedIn:NO];
}
(已更正-删除此行:[[self-presentedViewController]解除ViewController激活:是
完成:无];
我们不需要忽略,因为segue已经在幕后完成了。这是多余的,并且会记录错误消息) 在其他ViewController中,您可以在任何适当的地方创建“注销”按钮。CTRL键从该按钮拖动到情节提要中ViewController底部的“退出”符号,您将能够选择此序列作为展开序列 2我需要一个连接到3个UICollectionViewController的UIAbbarController(每个都有一个选项卡)。我必须像根一样把控制器放进去?如果是,如何处理它们之间的其他ViewController?像这样: 我认为您正在尝试找出tabBarController与上一个viewController(startVC)中的NavigationController之间的关系。答案是,它不应该-你真的不想在以前的导航控制器中嵌入选项卡栏VC,因为它会为选项卡栏的子视图控制器创建奇怪的情况 从startVC到tabBarVC的导航应通过模式序列,而不是推送序列 您可以在startVC中执行另一个展开顺序,以便于从tabBarController的ViewController返回:
- (IBAction)unwindToInitialNavFromModal:(UIStoryboardSegue *)segue {
}
(已更正-删除此行:
[[self-presentedViewController]解除视图控制器激活:是完成:无];
此方法不需要任何内容来执行解除)
3我需要在每个CollectionViewController上定制一个BarButtonItem(如图像2上的“全部删除”),我需要为每个CollectionViewController使用一个UINavigationController
默认情况下,您不会在tabBarVC中获得导航栏
您可以通过两种方式提供一个-将每个子viewController嵌入到它自己的导航控制器中
-手动将导航栏拖动到每个子viewController的场景 两者都可以,这实际上只是取决于您是否希望导航到其他ViewController 然后,您可以在左侧或右侧添加一个按钮图标,以连接到initialVC的展开序列(CTRL拖动到“退出”符号)
让我们假设您很乐意使用展开段(如果没有,有很多方法可以不用) 1当我加载我的应用程序(第一个ViewController)时,我需要(FB login=success)是否自动跳转到第二个ViewController。在这里,我想我不能使用像root这样的UINavigationController,苹果的HIG不喜欢它 你是第一个VC(我们称之为loginVC)
-不应包含在导航控制器中。
-应设置为应用程序的initialViewController 你的第二个VC(让我们称之为你的startVC)
-应包含在导航控制器中
-在该导航控制器的标识检查器中,分配情节提要ID:
@“InitialNavController”
在应用程序委托中,让我们使用一个loggedIn
BOOL属性:
@property (nonatomic, assign) BOOL loggedIn;
现在,在您的LogInViewController中
在<代码>视图显示中检查我们是否已登录,如果已登录,请立即导航到您的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];
}
}
重要的是要将其放置在ViewDidDisplay中,而不是(例如)viewDidLoad中-除非初始视图已正确初始化并在屏幕上显示,否则segue将无法工作
进行一个放松序列(并在loginVC
的@interface
中声明)…如果用户注销,loginVC将成为目标VC
- (IBAction)unwindOnLogout:(UIStoryboardSegue *)segue
{
[(AppDelegate*)[[UIApplication sharedApplication] delegate] setLoggedIn:NO];
}
(已更正-删除此行:[[self-presentedViewController]解除ViewController激活:是
完成:无];