【问题标题】:View Controller Loads Twice - How Do I Fix It?视图控制器加载两次 - 我该如何解决?
【发布时间】:2015-08-30 19:26:24
【问题描述】:

问题原因

当我在我的 iOS 项目中添加一个新的 Swift 类文件时,我犹豫不决,将其重命名、删除并创建了一个新文件。我想我其实是太优柔寡断了,我改了好几次。

问题

现在 viewController 加载了两次。我可以从字面上看到转换发生了两次,并且在测试期间,我可以看到我的 viewDidLoad 在我的控制台中运行了两次。

常见修复

我知道要检查的第一个解决方案是重复的 segue / segue 调用。检查您的文档大纲,看看是否有多个 segue。就我而言,这绝对不是故事板或 viewController 中的 segue 问题。

我的不寻常情况

我发现有人遇到同样的加载两次问题,这是因为重命名:

他们说我所做的重命名是我问题的根源,而且修复起来并不容易,因为重复项现在在我的 XML 文件中。但是这个 XML 文件在哪里,如何编辑它以删除该类的原始实例?我不知道。

那么我该如何解决这个加载两次的问题呢?我只希望我的 viewController 有一个正常的转场!

【问题讨论】:

    标签: ios xml xcode


    【解决方案1】:

    解决了我的问题!

    如果您弄乱了类名(或文件名)并且遇到了与我相同的“加载两次”问题,那么您可能很难解决它。我发现的唯一建议解决方案是从头开始创建一个新项目并复制内容。但是,相反...

    这是有史以来最简单的解决方案:

    重命名加载两次的 viewController 的类!不要担心文件,而是其中的视图控制器类。您的 XML 文件可能与原始类名重复,但将您的类重命名为全新的名称,应该没问题。

    【讨论】:

      【解决方案2】:

      删除 Segue 并以正确的方式声明它。

      我遇到了同样的问题。原因是我 ctrl 从 TableViewCell 拖动到目标 ViewController。 因此,我只需单击它并按键盘上的删除键即可删除segue。 然后ctrl从第一个view的ViewContoller拖到第二个ViewController。

      声明Segue的错误方式

      声明 Segue 的正确方式

      【讨论】:

      • 没有对错之分。如果以第二种方式完成,那就更明显了。在我的情况下,这正是导致问题的原因。我已经手动实现了 segue(#2 选项),但随后从我的 Main.storyboard 中删除了 segue 表示并使用选项 #1 重新实现了它 - 这使 Xcode 认为我对每个连接都有双重 segue,因此视图控制器加载了两次。
      • @marika.daboja 感谢您的意见,并为此答案增加了更多价值。
      • 谢谢老兄,这为我省去了很多烦恼!
      • 谢谢。很有帮助!
      【解决方案3】:

      这也发生在我身上。我的案例是从我的 UIButton 创建一个 segue 并从源代码执行它。 如果它与您的情况相匹配,那么只需从 ViewController 直接创建 segue 到您想要的 ViewController。 执行segue。它有效。

      【讨论】:

        猜你喜欢
        • 2012-04-06
        • 1970-01-01
        • 1970-01-01
        • 2019-01-03
        • 2019-08-10
        • 2021-02-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多