xcode / storyboard:无法将栏按钮拖动到顶部的工具栏

问题描述 投票:92回答:18

我有一个视图控制器,它是一个表的详细视图。当您单击表格的行时,它将转到详细视图。详细视图嵌入在导航控制器中,导航栏的左上角有一个按钮,可将您发送回表格。到现在为止还挺好。

我现在想在导航栏的右侧添加一个编辑按钮,以便您可以编辑详细视图。我的计划是这将以模态方式添加另一个视图控制器,以便您编辑项目的详细信息。标准的东西。

但是,当我尝试将条形按钮项目从对象列表拖动到导航栏时,它将不会采取。相反,当我松开鼠标按钮时,它会在底部的标签栏控制器上留下条形按钮。 (我的导航方案包括不同的标签,每个标签包括一个表格,详细视图等)

之前有人遇到过这个问题并且可以建议我做错了什么或某种解决方法将栏按钮项添加到导航屏幕的右侧。我必须在代码中添加它吗?

谢谢你的任何建议。

ios xcode navigation uibarbuttonitem
18个回答
153
投票

我在使用Xcode6时遇到了同样的问题,我注意到UINavigationItem会自动添加到您嵌入到NavigationController中的第一个ViewController,但是对于后续的ViewControllers,您必须手动添加它,如下所示:

  1. 在Object库中,找到Navigation Item,然后将其拖到storyboard中的第二个ViewController。
  2. 在对象库中,找到条形按钮项,然后将其拖动到您在上一步中创建的导航项。

现在,您的条形按钮会粘在场景的顶部。

更新解决方案仍适用于XCode 7,但我想添加更多描述性照片。以防万一有人不熟悉上面提到的标准或技术名称。注意右边的红色箭头,它们参考上面提到的步骤1,步骤2。还要注意左侧红色矩形的视图层次结构。 enter image description here


3
投票

我认为这是Xcode的一个错误。在Xcode 8中,将标签栏视图控制器之前的故事板中的segue更改为其所有选项(show detailpresent ...)。然后回到show。尝试拖动栏按钮项并修改图块。这个对我有用!


1
投票

你试过“清理”你的项目了吗?我知道有时会帮助我(只需转到“产品”>“清洁”)。或者,或者,删除导航栏并再次尝试。

如果您认为这是一个编程错误,请随时传递您的代码。我很乐意以任何方式提供帮助。 :)


1
投票

您必须重置xCode IDE。关闭xCode并在终端写下面的代码......它会工作。

rm -rf $HOME/Library/Application Support/Developer/Shared/Xcode
rm -rf $HOME/Library/Preferences/com.apple.dt.Xcode.*
rm -rf $HOME/Library/Saved\ Application\ State/com.apple.dt.Xcode.savedState
rm -rf $HOME/Library/Developer/Xcode

1
投票

同样的问题。我在导航控制器中有一个表视图控制器,许多ViewControllers跟随链进一步向下。正在为FIRST根视图控制器自动创建“导航项”,我可以毫无问题地添加“条形按钮项”。通过故事板,拖放。但那就是全部。在下面的表视图控制器和其他视图控制器上,即使它们位于初始导航控制器(出现自动生成的后退按钮)内,故事板也永远不会让我添加一个条形按钮项。

Wael Showair的解决方案对我不起作用。条形按钮项目不会出现。

我最终以编程方式解决了它(Swift 2.0):

var testButton = UIBarButtonItem(title: "Test Button", style .Plain, target: self, action: "testButtonMethod")
self.tabBarController?.navigationItem.rightBarButtonItem = testButton

无需额外的导航项目或栏按钮项目。


1
投票

我也遇到了同样的问题。我能够通过选择根视图控制器选项解决这个问题,然后在模拟矩阵中将顶部栏选项更改为不透明导航栏,并且能够在导航栏顶部添加项目。希望这个答案对某人有帮助。


1
投票

我在xcode 8中遇到了同样的问题。我只需关闭xcode并重新打开项目,然后我就可以将条形按钮添加到根控制器而没有任何问题。


1
投票

对于XCode 8

这里有很多答案。我尝试了其中一些,但我无法做到。所以我找到了我的解决方案,只需选择你的ViewController,进入属性检查器部分,然后将顶部栏更改为不透明导航栏和臂杆。您将在故事板上看到导航栏。您可以更改标题或添加一些项目。如果您不想保留Opaque,可以将样式更改为Inferred。

enter image description here


0
投票

不要将“条形按钮项”拖动到“导航控制器”,而是将其拖动到“详细视图控制器”。当您将详细信息视图嵌入“导航视图”时,“导航项”将添加到“详细视图控制器”中。如果将“条形按钮项”拖动到导航项的右侧,该项将包含在“右条形按钮项”下


0
投票

在Xcode 10中,我只是将转到这个新视图控制器的segue类型更改为“推送(已弃用)”,添加了导航项,因为在我进行此切换后它是允许的。如果切换回原来所需的segue类型,导航项将保留。


68
投票

讨厌的伎俩:

  1. 将你的segue改为推。
  2. 设置您需要的内容
  3. 回去展示

然后内容将是可编辑的,并且您有一个非弃用的segue样式。


32
投票

你的故事板的视图控制器很可能错过了Navigation Item。您可以从对象库中拖出一个,然后将其放在视图控制器上。

然后,您就可以将条形按钮项拖放到导航栏的左侧或右侧。


22
投票

我解决了它。将“导航项”拖到详细视图中。比你可以在栏按钮项目中拖动。


8
投票

解决这个问题的方法是,不是将UINavigationController拖入Storyboard并尝试将UIBarButtonItems添加到其中,而是拖入UITableViewController,然后转到

编辑器 - >嵌入 - >导航控制器

除了我可以将UIBarButtonItems添加到导航栏的两侧而没有任何问题之外,它给出了与之前相同的结果。


5
投票

它实际上是xcode问题。对我有用的一个技巧是在LEFT上的VIEW FILE STRUCTURE中添加条形按钮。直接在视图上添加。希望它能帮到你。:)


5
投票

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

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

enter image description here


4
投票

我也有这个问题,关闭并重新打开为我工作的项目。


3
投票

我相信这是一个XCode的怪癖。我遇到过同样的问题。我不得不重置Xcode并在故事板上移动事物的位置以最终实现它。它现在正在运作。

© www.soinside.com 2019 - 2024. All rights reserved.