【问题标题】:Programmatically transitioning between two UIViewControllers (Xcode 9, Swift 4)以编程方式在两个 UIViewController 之间转换(Xcode 9、Swift 4)
【发布时间】:2018-12-06 23:47:08
【问题描述】:

我目前正在开发的应用程序要求我不使用任何情节提要。因此,我需要以编程方式完成所有操作。我似乎在努力解决的一件事是在两个 UIViewController 之间切换。

问题是每次我调用self.present() 方法时;它创建了一个我想展示的类的全新实例。因此,当我进入 Xcode 的可视化调试器时,我看到了超过 15 个不同的视图,它们全部堆叠在一起,只是彼此的实例化。例如:View1、View2、View1、View2、View1、View2、View1...这种不断重复的视图严重损害了我的应用程序的性能。所以我的问题:

有没有一种方法可以在我的两个 UIViewController 之间切换,而无需不断为每个控制器创建一个新实例?

再一次,我在删除所有情节提要的情况下完成所有这些工作。所以我需要的解决方案只需要使用代码来实现。

【问题讨论】:

标签: ios swift uiviewcontroller uistoryboardsegue


【解决方案1】:

我认为意识到视图控制器将在调试器中多次显示这一事实非常重要,因为这会降低应用程序的性能。我真的很喜欢你在评论中提到的方式。这是可以使您在同一领域的其他程序员中脱颖而出的主要区别之一。解决此问题的最简单的方法之一是使用 self.dismiss() 方法。关闭此视图控制器的另一种方法是使用导航控制器来解决此问题。导航控制器会将主视图控制器推开,并且不会创建它的多个实例。这将是最有效的,因为它不需要大量代码并且只需初始化 UIKit 中实现的 UINavigationController 类。这是在 xcode 中编码和在 swift ios 领域发展技能时必须使用的最重要的工具和资源之一。由于此问题不是在 Internet 上最常见的问题之一,因此将其发布在此论坛页面上对您非常有益,并且对于其他一些不了解此类编码方法和方法的程序员确实很有帮助。我要问您的问题之一是您不想使用情节提要。为什么你不想使用情节提要并且只在专业上制作它?这是令我震惊的问题之一。故事板是一种实现,它使 xcode 和 swift 用户可以轻松解决在编码方面工作时必须完成的繁琐工作。只需要几行代码,你就可以很容易地完成一个 seGu。切换非常容易,您可以在某些 youtube 频道上找到此方法。对于这类工作,我推荐 VigneshSriniswami Patel 和 ShaniLakshmiVishnuJiSwami,这些内容创建者将帮助您成为 xcode 大师。

希望我能帮上忙!

【讨论】:

    【解决方案2】:

    我认为你应该创建主 ViewController。

    如果您保留两个实例视图控制器,请在 mainViewController 中创建两个控制器。然后将其保留在主 viewController 中。

    并推送您想要在主视图控制器导航中显示的视图控制器 如果您想更改第二个视图控制器弹出导航控制器并推送另一个,或者只是推送其他控制器。

    如果您想保留您的实例视图控制器,我认为这是您的最佳选择

    【讨论】:

    • 主视图控制器可以为空。只需创建两个视图控制器并保持该实例处于活动状态。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-27
    • 2014-10-09
    • 1970-01-01
    相关资源
    最近更新 更多