在两个UIViewControllers之间进行编程转换(Xcode 9,Swift 4)

时间:2018-06-28 02:00:18

标签: ios swift uiviewcontroller uistoryboardsegue

我当前正在使用的应用程序要求我不要使用任何情节提要。因此,我需要以编程方式进行所有操作。我似乎在挣扎的一件事是在两个UIViewController之间切换。

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

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

同样,我正在使用DELETED的所有故事板来完成所有这些工作。因此,仅使用代码即可实现我需要的解决方案。

2 个答案:

答案 0 :(得分:0)

我认为您应该创建主ViewController。

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

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

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

答案 1 :(得分:-3)

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

希望我能帮上忙!