【问题标题】:xcode/storyboard: can't drag bar button to toolbar at topxcode/storyboard:无法将栏按钮拖到顶部的工具栏
【发布时间】:2015-06-08 17:54:30
【问题描述】:

我有一个视图控制器,它是表格的详细视图。当您单击表格的行时,它会将您带到详细视图。详细视图嵌入在导航控制器中,因此导航栏左上角有一个按钮,可将您送回表格。到目前为止一切顺利。

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

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

任何人都遇到过这个问题,并且可以提出我做错了什么或某种解决方法来将条形按钮项添加到导航屏幕的右侧。我必须在代码中添加它吗?

感谢您的任何建议。

【问题讨论】:

  • 查看以下教程brianflove.com/2012/10/01/…
  • 我能够使用 self.navigationItem.rightBarButtonItem = self.editButtonItem; 添加按钮并在情节提要中创建了新的editvc,但是我不确定如何创建segue。无法在情节提要中执行此操作,因为编辑按钮不可见,所以我想它必须在代码中。会尝试prepareforsegue吗?
  • 如果其中一个答案对您有所帮助,您应该接受它:)

标签: ios xcode navigation uibarbuttonitem


【解决方案1】:

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

  1. 在对象库中,找到导航项,然后将其拖到您的 故事板中的第二个 ViewController。
  2. 在对象库中,找到 Bar Button Item,然后将其拖动到您在上一步中创建的导航项。

现在您将把 Bar Buttons 粘贴到场景的顶部。

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

【讨论】:

  • 是的,这对我有用。我认为这是正确的答案,XCode 似乎没有将 Navigation Item 添加到后续 ViewControllers 中。
  • 这是正确的,但是图像中的红色箭头应该从对象库中的条形按钮项一直到左侧的红色框。
  • 您可以将其拖放到画布中,如红色箭头所示,也可以按照您的建议将其拖放到文档大纲中。没有区别
  • 很高兴我找到了这个答案,因为它很好用——我只是很困惑为什么 UINavigationItem 还没有出现在 Storyboard 上?它显然在运行时就在那里,因为代码 self.navigationItem.rightBarButtonItem = ... 可以工作。我猜第一个 VC 上的 UINavigationController 会为所有后续推入堆栈的 VC 实例化它。但是,通过手动将其中一个拖到那里,为什么不将 2 个 UINavigationItems 放在一起呢?您手动拖动的那个,以及 UINavigationController 中已经存在的那个?
【解决方案2】:

恶作剧:

  1. 将您的 segue 更改为 push。
  2. 设置你需要的内容
  3. 设置回节目

然后内容将是可编辑的,并且您有一个不推荐使用的 segue 样式。

【讨论】:

  • 男人,好丑。但这适用于 Xcode 7.3 中视图控制器上的 UIBarButtonItem
  • 天啊,它仍在 XCode 8.2.1 中工作。什么时候会修好?从来没有,可能
  • 这是我找到的唯一方法,不用代码添加。
  • 天哪...谢谢(y)
  • 不敢相信这个bug在2年多之后还在这里
【解决方案3】:

故事板的视图控制器可能缺少Navigation Item。您可以从对象库中拖出一个,然后将其放到您的视图控制器上。

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

【讨论】:

  • 这行得通,但我觉得只要你有一个 push segue 到控制器,这曾经是自动完成的
  • 这应该是正确的答案。其余的对我来说似乎是黑客攻击
【解决方案4】:

我解决了。将“导航项”拖到您的详细视图中。比你可以在 Bar Button Item 中拖动。

【讨论】:

    【解决方案5】:

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

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

    除了我可以毫无问题地将 UIBarButtonItems 添加到导航栏的两侧之外,这给出了与以前相同的结果。

    【讨论】:

    • 你应该上去!!
    【解决方案6】:

    它实际上是 xcode 问题。 对我有用的一个技巧是在左侧的查看文件结构中添加栏按钮。直接在视图上添加。 希望对你有帮助。:)

    【讨论】:

    • 这行得通!我想这就是解决方案,只要 Apple 用 Xcode 8.2 修复错误
    【解决方案7】:

    我认为这是一个错误。我有同样的问题。我通过禁用尺寸类解决了这个问题,然后启用它。

    您可以在界面生成器文档中禁用和启用尺寸类。

    【讨论】:

      【解决方案8】:

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

      【讨论】:

        【解决方案9】:

        我相信这是 XCode 的一个怪癖。我遇到过同样的问题。我不得不重新设置 Xcode 并改变故事板上的东西的位置,以最终让它运行起来。它现在正在工作。

        【讨论】:

          【解决方案10】:

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

          【讨论】:

            【解决方案11】:

            您是否尝试“清理”您的项目?我知道这有时对我有帮助(只需转到“产品”>“清洁”)。或者,也可以删除导航栏并重试。

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

            【讨论】:

              【解决方案12】:

              您必须重置 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
              

              【讨论】:

                【解决方案13】:

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

                不需要额外的导航项或条形按钮项。

                【讨论】:

                  【解决方案14】:

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

                  【讨论】:

                    【解决方案15】:

                    我在 xcode 8 中遇到了同样的问题。我必须简单地关闭 xcode 并重新打开项目,然后我才能将条形按钮添加到根控制器而没有任何问题。

                    【讨论】:

                      【解决方案16】:

                      对于 XCode 8

                      这里有很多答案。我尝试了其中一些,但我做不到。 所以我找到了我的解决方案,只需选择您的 ViewController,转到 Attributes Inspector 部分并将 Top Bar 更改为 Opaque Navigation Bar 和 Boom。您将在情节提要上看到导航栏。您可以更改标题或添加一些项目。如果您不想保持不透明,可以将样式更改为推断

                      【讨论】:

                        【解决方案17】:

                        在 Xcode 10 中,我只是将转到这个新视图控制器的 segue 类型更改为“推送(不推荐)”,在我进行此切换后添加了导航项,因为它是允许的。如果您切换回您最初想要的 segue 类型,导航项将保留。

                        【讨论】:

                          【解决方案18】:

                          不要将“Bar Button Item”拖到“Navigation Controller”,而是将其拖到“Detail View Controller”。 当您将详细视图嵌入到“导航视图”中时,“导航项”将被添加到“详细视图控制器”中。如果将“Bar Button Item”拖动到 Navigation Item 的右侧,该项目将包含在“Right Bar Button Items”下

                          【讨论】:

                            【解决方案19】:

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

                            • 先使用 push segue
                            • 添加了条形项
                            • 返回显示segue
                            • 完成

                            【讨论】:

                              【解决方案20】:

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

                              【讨论】:

                                猜你喜欢
                                • 2011-02-10
                                • 2011-07-27
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                • 2014-09-18
                                • 1970-01-01
                                • 2013-11-29
                                相关资源
                                最近更新 更多