故事板导航控制器和标签栏控制器

时间:2014-05-08 16:59:53

标签: ios uinavigationcontroller storyboard uitabbarcontroller uistoryboard

我正在尝试在Storyboard中进行以下设置。

Storyboard

我在开头有一个表视图,当我点击一个单元格时,它需要转换到标签栏控制器,这是有效的。但是现在我想在最右边的两个控制器中找到一个标题和一个额外的导航栏按钮。

但是我似乎无法将按钮拖到那里或者在设置标题时没有显示任何内容。如何在故事板中实现此设置?

编辑:

根据以下答案更新了问题。

New setup

当我有这个新的设置(因此中间有一个额外的导航控制器)我可以在故事板中设置标题,但是在运行应用程序时,添加的标题不会显示。

编辑:我有uploaded一个完全符合设置的xcode项目。也许它可以派上用场。

5 个答案:

答案 0 :(得分:24)

要更改UINavigationBar标题(无需另外创建2个UINavigationController),您可以使用

[self.parentViewController.navigationItem setTitle:@"Title"];

并添加右键使用

self.parentViewController.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(myRightButton)];
viewDidLoad引用的每个UIViewController的{​​{1}}方法进行

如果您想使用"导航结构"来自UITabBarController的{​​{1}}内,以便您可以编辑 BUFViewController.m

UIViewController

您必须认为TabItems位于您的父#import "BUFViewController.h" @interface BUFViewController () @end @implementation BUFViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. [self.parentViewController.navigationController setNavigationBarHidden:YES]; self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(done)]; } -(void)done{ [self.parentViewController.navigationController popToRootViewControllerAnimated:YES]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end 内,因此您希望隐藏父UITabBarController并展示您的NavigationController。 之后,您可以使用UINavigationBar在父母的popToRootViewControllerAnimated上回复您的表格。

希望有所帮助:)

答案 1 :(得分:10)

以防万一有人在寻找快速的方法:

tabBarController?.title = "Your Title"
tabBarController?.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Right Button Title", style: UIBarButtonItemStyle.Plain, target: self, action: "rightButtonFunction")

代码最好放在viewDidAppearviewWillAppear中,以便在按下不同的标签时标题和按钮发生变化。

使用这种方法你也不需要额外的导航控制器。

答案 2 :(得分:3)

我查看了你的测试应用程序,我确实在导航栏下看到了非常微弱的标题。如果选择标签栏控制器,则可以看到两个导航栏,并取消选中" Under Top Bars"框。但是,这会在导航栏上给您一个奇怪的阴影。我不知道是否有一种简单的方法可以解决这个问题,但我不认为这个带有两个导航栏的用户界面看起来不错。您可能希望消除初始导航控制器,并使用模态segue来显示标签栏控制器。您可以向导航控制器添加一个条形按钮项,您仍然需要解除模态视图控制器。

答案 3 :(得分:1)

您需要使用UINavigationViewControllers替换这些视图控制器。

删除右侧两个视图控制器。

将第2个UINavigationViewControllers拖放到故事板上,然后按照自己的意愿定位。

然后,您需要将这些新的导航视图控制器挂钩到标签栏控制器。按住Ctrl键并从标签栏控制器拖动到导航控制器。选择"查看控制器"来自"关系Segue"弹出的菜单部分。为两个导航控制器执行此操作。

答案 4 :(得分:0)

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"Overview_Register"])
    {
        WDRegisterViewController *obj=(WDRegisterViewController *)[segue destinationViewController];
        obj.str_Title=@"Edit Profile";
        obj.isRegister=NO;
    }
}

            [self performSegueWithIdentifier:@"Overview_Measure" sender:nil];



    UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    WDPeekViewController *Peek = (WDPeekViewController *)[sb instantiateViewControllerWithIdentifier:@"WDPeekViewController"];
 [self.navigationController pushViewController:tabBarController animated:YES];