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


99

我有一个视图控制器,它是表的详细视图。当您单击表格的行时,它将带您到详细信息视图。详细信息视图嵌入在导航控制器中,以便导航栏的左上方有一个按钮可以将您带回到表格中。到目前为止,一切都很好。

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

但是,当我尝试将栏按钮项从对象列表拖到导航栏时,它不会。相反,当我放开鼠标按钮时,它会将条形按钮留在底部的标签栏控制器上。(我的导航方案包括不同的选项卡,并且每个选项卡都有表格,详细信息视图等。)

任何人都曾经遇到过这种情况,可以建议我做错了什么,或者采取某种变通办法,将条形按钮项目添加到导航屏幕的右侧。我必须在代码中添加它吗?

感谢您的任何建议。



我能够使用self.navigationItem.rightBarButtonItem = self.editButtonItem;添加按钮。并在情节提要中创建了新的editvc,但是不确定如何创建segue。无法在情节提要中执行此操作,因为“编辑”按钮不可见,因此我想它必须在代码中。会尝试prepareforsegue吗?
user1904273'4

如果答案之一对您有帮助,您应该接受它:)

Answers:


157

我在使用Xcode6时遇到了同样的问题,并且我注意到UINavigationItem是为嵌入到NavigationController中的第一个ViewController自动添加的,但是对于后续的ViewController,则必须按如下方式手动添加:

  1. 在对象库中,找到“ 导航项”,然后将其拖动到情节提要中的第二个ViewController。
  2. 在对象库中,找到“ 条形按钮项”,然后将其拖动到上一步中创建的导航项。

现在,您将把“条形按钮”固定在场景的顶部。

更新 该解决方案仍适用于XCode 7,但我想添加更具描述性的照片。以防万一没有人真正熟悉上述标准或技术名称。请注意右侧的红色箭头,它们表示上述的步骤1,步骤2。还要注意左侧红色矩形上的视图层次。 在此处输入图片说明


2
是的,这对我来说是成功的。我认为这是正确的答案,XCode似乎没有将Navigation Item添加到后续的ViewControllers中。
Jeremy Chone 2015年

这是正确的,但图像中的红色箭头应从对象库中的条形按钮项一直移到左侧的红色框。
malhal

您可以将其拖放到画布中,也可以按照红色箭头指示将其拖放到画布中,也可以按照建议将其拖放到“文档”大纲中。它不会有所作为
瓦埃勒Showair

我很高兴我找到了这个答案,因为它很好用-我只是困惑为什么UINavigationItem不在Storyboard上?它显然在运行时在那儿,因为代码self.navigationItem.rightBarButtonItem = ...可以工作。我猜第一个VC上的UINavigationController会为推入堆栈的所有后续VC实例化它。但是,通过手动在其中拖动一个,为什么不最终在另一个顶部放置2个UINavigationItems?您手动拖动了一个,而UINavigationController已经在那里拖动了一个?
James Toomey

70

讨厌的把戏:

  1. 更改您的顺序以进行推送。
  2. 设置您需要的内容
  3. 回到显示

然后,内容将是可编辑的,并且您拥有不建议使用的样式。


真丑 但这适用UIBarButtonItemXcode 7.3中的视图控制器。
mikeho 2016年

OMG,它仍在XCode 8.2.1中工作。什么时候会修复?永远不会,可能
Dima Rostopira

这是我发现没有通过代码添加的唯一方法。
约书亚记

噢,天哪...谢谢(y)
Nasir Khan

我不敢相信这个错误在两年多之后仍然存在
Carioni '18

33

情节提要的视图控制器可能缺少Navigation Item。您可以从对象库中拖动一个,并将其放在视图控制器上。

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


1
这行得通,但是我觉得只要您对控制器进行推送即可自动完成此操作
aryaxt 2015年

这应该是正确的答案。其余的东西对我来说似乎很烂
翁兆基(MK Yung)


8

我解决此问题的方法是,不是拖动UINavigationController到Storyboard中并尝试向其中添加UIBarButtonItems,而是拖动UITableViewController,然后转到

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

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


你应该上去!
Vin

5

实际上是xcode问题。对我有用的一个技巧是在左侧的VIEW FILE STRUCTURE中添加bar按钮,直接在视图上添加。希望对您有帮助。


这可行!我想这是解决方案,只要Apple用Xcode 8.2修复该错误
Arjun Kalidas

5

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

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

在此处输入图片说明


4

我也遇到了这个问题,请关闭并重新打开对我有用的项目。


3

我相信这是一个XCode怪癖。我遇到过同样的问题。我不得不重置Xcode并转移情节提要上的东西的位置,以便最终将它放开。现在正在工作。


3

我认为这是Xcode的错误。在Xcode 8中,segue将选项卡视图控制器之前的故事板中的in故事板更改为其所有选项(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

同样的问题。我在导航控制器中有一个表视图控制器,在链的后面有许多ViewController。正在为第一个根视图控制器自动创建一个“导航项”,并且我可以毫无问题地向其中添加“条形按钮项”。通过情节提要,拖放。但是,仅此而已。在下面的Table View Controller和其他View Controller上,即使它们位于初始的Navigation Controller中(出现了自动生成的后退按钮),情节提要也永远不会让我添加Bar Button Item。

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

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

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

不需要额外的导航项或Bar Button项。


1

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


1

我在xcode 8中遇到了同样的问题。我只需要关闭xcode并重新打开项目,然后我便可以将bar按钮添加到Root Controller中,而没有任何问题。


1

对于XCode 8

这里有很多答案。我尝试了其中一些,但未能成功。因此,我找到了解决方案,只需选择“” ViewController,转到“ 属性检查器”部分,然后将“ 顶部栏”更改为“ 不透明导航栏”和“繁荣”。您将在情节提要板上看到导航栏。您可以更改标题或添加一些项目。如果您不想保留Opaque,可以将样式更改为Inferred

在此处输入图片说明


1

在Xcode 10中,我只是将转到该新视图控制器的segue的类型更改为“推(不推荐使用)”,并在进行此切换后添加了允许的导航项。如果您切换回您原来想要的segue类型,则导航项将保留。


0

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


0

就像Mark Lyons所说的,我使用了相同的解决方案。

  • 首先使用推推式
  • 添加了酒吧项目
  • 返回以显示segue
  • 做完了

0

在Xcode 11中,您可以将按钮拖动到导航栏上以创建栏按钮。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.