如何在导航控制器底部创建一个持久按钮?

Posted

技术标签:

【中文标题】如何在导航控制器底部创建一个持久按钮?【英文标题】:How do I create a persistent button on the bottom of a navigation controller? 【发布时间】:2016-10-13 16:34:21 【问题描述】:

我有一个基于主/细节的 iPhone 应用程序。在不使用选项卡式导航样式应用程序的情况下,如何在导航控制器底部创建一个持久按钮(我希望在每个视图上都有它)。请线框(它的加号按钮)。我尝试在底部的工具栏中添加一个按钮栏项目,但由于某种原因它不会显示。我正在使用 xcode 8 和 ios 10。

作为参考,我创建了一个自定义导航控制器类并插入了以下代码

#import "MainNavigationController.h"

@interface MainNavigationController ()

@end

@implementation MainNavigationController

- (void)viewDidLoad 
    [super viewDidLoad];
    NSLog(@"Testing");
    // Do any additional setup after loading the view.

    NSMutableArray *buttonsArray = [[NSMutableArray alloc] init];
    UIBarButtonItem *myButton1=[[UIBarButtonItem alloc] initWithTitle:@"button 1" style:UIBarButtonItemStylePlain target:self action:@selector(toolbarButtonPressed1:)];
    [buttonsArray addObject:myButton1];
    UIBarButtonItem *myButton2 = [[UIBarButtonItem alloc] initWithTitle:@"button 2" style:UIBarButtonItemStylePlain target:self action:@selector(toolbarButtonPressed2:)];
    [buttonsArray addObject:myButton2];
    [self setToolbarItems:buttonsArray animated:YES];

    [self.toolbar setBarStyle:UIBarStyleBlack];
    [self.toolbar setItems: buttonsArray animated:NO];


然后我使工具栏在界面构建器中可见...工具栏显示并在代码中设置颜色,但按钮不出现

【问题讨论】:

“我尝试在底部的工具栏中添加一个按钮栏项目,但由于某种原因它不会显示”如果该解决方案可行,您应该问自己是什么原因。很遗憾,您选择不显示代码,因此无法提供帮助。 你的代码没有意义。导航控制器没有工具栏项;它的孩子做。您需要在此导航控制器的所有子项中设置 self.navigationItem.toolbarItems。我下面的解决方案可能更适合你。 【参考方案1】:

一个简单的解决方案是将您的 UINavigationController 嵌入到自定义父视图控制器中。这意味着导航控制器的视图是父视图控制器视图的子视图。这意味着您可以添加父视图控制器视图的另一个子视图,即按钮。

【讨论】:

根视图实际上是一个拆分视图控制器,父视图的基类是什么? "根视图实际上是一个拆分视图控制器"。在这种情况下,您可以将拆分视图控制器嵌入到自定义父视图控制器中。在任何情况下,这都不是一件不寻常的事情。当然,你必须考虑你希望这个界面如何在 iPad 上工作(扩展的拆分视图控制器)。

以上是关于如何在导航控制器底部创建一个持久按钮?的主要内容,如果未能解决你的问题,请参考以下文章

iphone导航控制器和表格视图

Show Segue from 按钮打开时没有导航控制器

模态segue推动顶部的附加导航栏滑动

如何让自定义导航控制器为每个故事板提供相同的自定义导航栏按钮

带有底部工具栏的 UI 导航控制器在视图切换时丢失 UIBarButtonItem

如何在导航控制器中将过渡动画从底部更改为顶部?