【问题标题】:Change the listing order of the view controllers in Xcode storyboard更改 Xcode 故事板中视图控制器的列表顺序
【发布时间】:2012-09-17 02:58:38
【问题描述】:

我刚刚开始使用情节提要开始我的第一个应用程序。我正在使用 Xcode 4.5 和 iOS 6 SDK。我想知道如何更改控制器在文档大纲(故事板左侧的面板)中列出的顺序。

【问题讨论】:

    标签: ios xcode xcode4 uistoryboard


    【解决方案1】:

    在最新的 Xcode 13 中,您可以手动重新排列情节提要场景。只需在左侧窗格中拖放即可。

    旧答案

    Xcode 11 中,您只需打开故事板 XML 并将特定的“场景”移动到“场景”标签下的适当位置。就是这样。顺序将与文档大纲相对应。

    【讨论】:

    • 这正是我想要的。这样做可以维护所有的 segues/relationships。谢谢。
    • 这是一件非常棒的事情,而且它也很有效。但是没看懂的直接在main.storyboard文件上点右键,作为源代码打开。然后您将能够看到“场景”标签。希望对新人有所帮助。还要感谢@victor
    【解决方案2】:

    在 Xcode 5 中,情节提要的“文档大纲”中列出的视图控制器/场景的顺序似乎由情节提要 XML 文件中的 sceneID 属性值的字母数字排序决定。

    从 4.6 升级到 Xcode 5 后,文档大纲似乎以随机顺序列出了我的场景。我检查了故事板 XML 文件(右键单击故事板文件 -> 打开为 -> 源代码),但场景的顺序是正确的。经过进一步调查,我意识到 sceneID 属性值是问题所在。我找到了每个 sceneID 属性,并为该值添加了一个按字母数字递增的前缀。例如,对于应该出现在文档大纲中的第一个场景,我在其 sceneID 值前加上“1a”,第二个“1b”,第三个“1c”等等。在对我的所有场景都这样做之后,它们在文档大纲中具有正确的列出顺序。

    我认为 sceneID 值可能仅用于唯一标识/排序目的,因此希望更改它们不会导致其他意外问题。但是我仍然可以毫无问题地使用 Interface Builder 中的情节提要,并且我的应用程序似乎可以正常工作。因此,如果这个问题和我一样让您感到恼火,您可能会考虑这种解决方法,直到 Apple 为我们提供适当的解决方案......请务必先进行备份!

    【讨论】:

    • 是的 Drux,我这样做的方式是先按数字(对于特定模块/选项卡)然后按字母的子子元素,即 1a、1b,因此当您添加新的 VC 时,您仍然可以很容易地订购它们.你也可以一开始只做奇数/偶数,这样也可以在中间留出空间。
    • 在 Xcode 6 中,场景的顺序对应于文档大纲。无需更改场景 ID - 只需向上或向下移动“场景”标签下的整个内容。
    【解决方案3】:

    在文档大纲中,拖动橙色视图控制器图标。执行此操作时,您将看到蓝色的水平插入点出现在灰色框之间。放手,视图控制器的整个灰色组框将重新定位。

    【讨论】:

    • 这似乎是复制视图控制器而不是移动它。仍然可能是一个不错的解决方案,因为我可以删除旧的。不过还是有点奇怪。
    • 它确实复制 - 同意。没有注意到绿色加号图标和重复出现。
    • 遗憾的是它没有移动它,因为复制(并删除旧的)会删除复制场景中所有已注册的转场。
    • 此外,在 Xcode 5 中,它似乎随机选择放置副本的位置。拖动到给定的相同位置并不能保证副本最终会到达那里,并且撤消和重新拖动到同一位置会产生不同的结果。
    • 不。重新排序确实工作。您可以将 viewController 拖到所有场景下方以创建副本。恭喜,所有有重复 viewControllers 的人
    【解决方案4】:

    至少对于 Xcode 4.6 来说,场景是按照它们存储在情节提要 xml 中的顺序排列的。

    所以你可以用文本编辑器打开它并根据你的喜好重新排列标签,然后启动 Xcode。

    【讨论】:

    • 很酷的解决方案,虽然看起来它可能比所选答案更有效。
    • 在 Xcode 5 中,这似乎不再正确——XML 文件中的顺序与 UI 不匹配。
    • 在 Xcode 6.0.1 上,这是解决方案。实际上它比更改场景的 id 或拖动、删除、重新创建视图控制器的 segue 更快。
    【解决方案5】:

    我不确定它对你是否仍然有意义。 从 xcode 6.1 开始,您可以右键单击情节提要文件,选择“打开为...”->“源代码”并更改视图控制器重新排列部分顺序的顺序。由于未知原因,我无法通过拖放视图控制器图标来移动它们,所以这是唯一适合我的方法。

    【讨论】:

      【解决方案6】:

      对于 Xcode 5.1.1,您必须更改标签 segue 的顺序。将storyboard打开为source code(右键->打开为->源代码)

      <segue destination="Bdn-Z8-Ql8" kind="relationship" relationship="viewControllers" id="0DS-1d-02F"/>
      <segue destination="KY3-Z9-s1u" kind="relationship" relationship="viewControllers" id="u45-Ly-JkB"/>
      <segue destination="k72-nP-MyV" kind="relationship" relationship="viewControllers" id="TAj-be-l8p"/>
      <segue destination="gcA-x5-8Iw" kind="relationship" relationship="viewControllers" id="B7T-js-1Vs"/>
      

      改变以上行的顺序会改变 ViewControllers 的顺序

      【讨论】:

        【解决方案7】:

        似乎视图控制器属于标签栏控制器,因此按钮的顺序决定了顺序而不是视图控制器在屏幕上的位置。您应该能够拖放按钮。

        【讨论】:

        • 我不确定我是否理解您的回答。我的应用程序运行良好,点击标签栏会加载正确的视图控制器。我只是想知道是否有办法更改它们在左侧列出的顺序。您会看到它们是按顺序排列的:FirstViewController、FourthViewController、ThirdViewController、SecondViewController。我似乎无法拖动左侧列表中的视图控制器。
        • Cthutu 是正确的 - 在故事板的标签栏上单击一次以选择它(可能两次?)然后将按钮拖动到所需的顺序。
        • 我知道如何对标签栏中的按钮进行排序。我想知道的是如何更改视图控制器在左侧面板中列出的顺序。
        • 啊。我认为现在不可能。在 nib/xib 中管理用户创建元素的顺序在 Interface Builder 3 及更低版本中是可行的,但 4 仍然是一个新的重写。很多我们习惯的交互现在还没有得到支持。
        【解决方案8】:

        只需将图标拖放到您的第一个视图控制器屏幕的底部即可。 Xcode 11.6

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-10-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-01-01
          • 2012-03-10
          • 1970-01-01
          相关资源
          最近更新 更多