【问题标题】:Adding views with controllers to a view with controller - proper way?将带有控制器的视图添加到带有控制器的视图中-正确的方法?
【发布时间】:2013-01-29 05:49:18
【问题描述】:

我必须将几个视图(每个都有自己的控制器)添加到主视图(带有控制器)。我正在关注 MVC。添加这些子视图的代码应该写在视图类还是控制器类中?还有,什么是正确的方法,

MyViewController1 *myViewController1 = [[MyViewController1 alloc] init];
[myMainViewController.view addSubview:myViewController1.view];

或者,其他方式?

还有另一种选择 - 容器视图控制器(使用 addChildViewController 方法),但这很难管理,所以我需要简单的方法。

【问题讨论】:

  • @Murali 您的编辑使其更难阅读。请确保您的编辑以有意义的方式改进帖子:)

标签: iphone ios objective-c model-view-controller uiviewcontroller


【解决方案1】:

如果您将视图控制器添加到另一个视图控制器的视图中,那么您需要使用容器包含。您可以在 IB 中使用容器视图执行此操作。这比在代码中制作自定义容器控制器更容易。

【讨论】:

    【解决方案2】:

    绝对最好的方法是根据视图控制器的功能维护视图控制器(例如,一个可能是dashboardView,一个可能是settingsView)。现在,当从一个视图控制器移动到另一个视图控制器时,请使用 navigationController

    我遵循的做法是在您的应用启动时在appDelegate 中声明一个navigationController,然后继续重复使用它。示例 -

    YourAppDelegate *delegate=(YourAppDelegate *)[[UIApplication sharedApplication] delegate];
    MyViewController1 *myVC = [[ FLOHome alloc ]initWithNibName:@"MyViewController1" bundle:[NSBundle mainBundle]];
    [delegate.navigationController pushViewController:myVC animated:NO];
    

    这绝对是处理 viewController 的最佳方式。 navigationController 处理很多事情,比如内存管理、缓存视图以使它们变得活泼。当您退出视图控制器时,您可以继续推送视图控制器并弹出它们...

    【讨论】:

    • 你为什么说hackish?您能否建议另一种方法来在整个应用程序中维护单个实例?我的意思是单身。
    • 任何继承自UIViewController 的视图控制器都有一个属性navigationController,这意味着如果您将所有视图控制器推送到导航堆栈上,它们都可以通过以下方式访问同一个导航控制器打电话给self.navigationController
    • 但来自文档If the receiver or one of its ancestors is a child of a navigation controller, this property contains the owning navigation controller. This property is nil if the view controller is not embedded inside a navigation controller.,因此如果不用作navigationViewcontroller 的一部分。此属性无效。如果您将其用作navigationController 的一部分,如上所述,此字段由 iOS 设置
    • 当你第一次展示一个视图控制器时,你将它推送到导航堆栈上,此时它的navigationController 属性被设置为正在展示的视图控制器的导航控制器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-24
    • 2013-06-05
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多