2009-08-11 55 views
0

我开始一个应用程序,我想有多个视图控制器。一些视图将显示在导航控制器内部。我可以创建一个导航控制器,然后添加另一个实例化的视图控制器。但是我想要做的只是实例化一个拥有自己视图的视图控制器,它是导航视图控制器的根视图控制器。所以当我实例化视图控制器时,我想创建一个导航控制器并将“自我”推到它上面。当我这样做时,我的模拟器崩溃,细节没有真正的理由。控制台不显示任何东西。有任何想法吗。我的理由是将逻辑分离出来,而不需要一个视图控制器,它只需创建一个导航控制器,然后将其上的另一个视图控制器作为根视图控制器。可以UIViewController自己添加到UINavigationController

回答

3

我不完全确定我是否正确理解你的问题。如果视图控制器将自己推送到导航控制器,为什么会更好?我的意思是,你必须在代码中实例化你的视图控制器(无论是应用程序委托还是另一个视图控制器)。为什么不能在那里创建导航控制器,实例化你的VC,然后把它推到导航控制器上?据我所知,这不涉及创建任何额外的视图控制器。

无论如何,有一个视图控制器自己决定它在哪里使用(即推到),是不是最佳实践。这样你就失去了在其他情况下使用它的灵活性。总是尝试尽可能松散地耦合您的组件。

+0

我明白了你的观点。我刚刚开始我的应用程序,我的想法是,对于另一个视图控制器使用此视图控制器,它可能只是实例化它,它是否应该在导航控制器中的逻辑对父级是透明的。 我想散列出我将如何管理我的多个视图控制器以及它们将如何交互。除了使用导航控制器,选项卡控制器等基本功能外,还无法找到涵盖此的许多文档。 – Brian 2009-08-11 16:46:01

+0

好吧,我忘记提及的另一点:您的导航控制器必须拥有某种拥有权的父项。可以将它添加到标签栏控制器中,作为您的应用程序委托中的主视图控制器实例化,或者作为模态视图控制器推送到其他视图控制器上。你的子视图控制器应该怎么做?谁将拥有导航控制器(内存管理)? – 2009-08-11 17:21:54

+0

“我的想法是,对于另一个视图控制器来使用这个视图控制器,它可能只是实例化它,它是否应该在导航控制器中的逻辑将对父级透明” - >我想这不会工作,因为在这种情况下,家长将不得不出示导航控制器而不是您的子视图控制器。 – 2009-08-11 17:26:15

相关问题