ios-如何在定位之后将按钮添加到导航控制器可见?

我已经在内置于导航控制器中的Storyboard中设置了一个视图控制器。 在此导航控制器中,我已选中“显示导航栏”和“显示工具栏”,并分别在“模拟量度”的“顶栏”和“底栏”中启用了导航栏和工具栏。 然后,我从视图控制器向另一个视图控制器“显示例如推送”。 在两个视图控制器上,我都以相同的方式设置了“模拟度量”,因此导航栏和工具栏在所有三个控制器上均可见。

问题是,我可以将导航栏和工具栏上的按钮按钮项都添加到第一个视图控制器中,但是我不能将导航按钮和第二个视图控制器上的栏按钮项添加到导航栏中。 当我在导航栏上放置一个按钮时,它会被添加到工具栏中。 而且我无法双击导航栏添加标题。 在大纲中,我看到第二个视图控制器上没有导航项,但第一个视图控制器中有导航项。

我可能可以通过编程将按钮添加到导航栏中,但是我想在Storyboard中直观地执行此操作。 我的问题是,此设置有什么问题,还是Xcode的错误?

enter image description here

enter image description here

Jordan H asked 2020-07-30T14:32:21Z
7个解决方案
90 votes

对于XCode 6,不会自动将第二个视图控制器的UINavigationItem自动添加到情节提要内部的“视图控制器”对象上。 您必须将UINavigationItem拖动到该视图Controller Object的导航栏上,然后再在其顶部添加UIBarButtonItem

我不确定为什么要这样设计。 我是几周前才发现的。

Xcode 6 UiNavigationItem

Ricky answered 2020-07-30T14:32:43Z
12 votes

如果您有大量的视图控制器并且很少有自定义自动布局的东西,则可以禁用大小类,然后重新启用它将在情节提要中添加所有缺少的导航栏。

enter image description here

enter image description here

如果您有大量的自定义自动布局内容链接在一起,显然不建议这样做。

如果只有一个UIViewController缺少导航栏,则只需将UINavigationItem放到它上面。

William T. answered 2020-07-30T14:33:12Z
3 votes

如果您使用的是Xcode 7 beta 4/5,请尝试重新启动Xcode,这将为我解决问题

jrenouard answered 2020-07-30T14:33:33Z
1 votes

我只是碰到了这个问题,它似乎受到显示视图控制器的segue的影响。

如果segue中的“种类”设置为“显示(例如,推送)”,则无法将该项目拖动到右上角。 但是,如果您将“种类”设置显式更改为“推”,则可以这样做。

编辑:实际上我只是注意到“ Push”已被弃用。 不知道苹果在这里想什么。 但是,您可以在添加按钮后将其更改回“显示”,这似乎可行:D

ooxio answered 2020-07-30T14:34:06Z
0 votes

对于层次结构中的第二个视图控制器,您可以在属性中设置标题,而无需添加“导航项”enter image description here

Daniil Bystrov answered 2020-07-30T14:34:26Z
0 votes

我认为这是一个错误。 我遇到了同样的问题。我通过禁用大小类来解决此问题,然后启用它。

您可以在“界面”构建器文档中禁用和启用尺寸类别。

enter image description here

Hongyang answered 2020-07-30T14:34:54Z
0 votes

非常简单 您只需要首先使用navigaitonItem作为按钮的持有人,然后可以在其上面添加barButtonItems。

emido333 answered 2020-07-30T14:35:15Z
translate from https://stackoverflow.com:/questions/25587465/how-to-add-buttons-to-navigation-controller-visible-after-segueing