【问题标题】:Should i create a view ( consisting UIButton, UILabel etc) in a separate UIView class or inside UIViewController?我应该在单独的 UIView 类中还是在 UIViewController 中创建视图(包括 UIButton、UILabel 等)?
【发布时间】:2013-12-15 06:10:03
【问题描述】:

我有一个 UIViewController 说 viewControllerA 包含一些视图元素,如 UIButtonUILabel 等。现在我的问题是我是否应该在单独的 UIView 类中创建这些视图元素,然后添加 UIViewController ,或者我应该直接在UIViewController 中创建这些视图元素。根据 MVC,在单独的 UIView 类中创建视图元素然后将其添加到 UIViewController 中是否合适?

【问题讨论】:

  • 这完全取决于您的要求
  • 您是否有理由不在 xcode 的故事板中创建这些按钮和标签,然后将它们链接到您的 VC 类以用于操作和出口?
  • @manujmv 但是相应地,MVC 不适合将所有视图元素放在一个单独的类中吗?
  • @Spectravideo328 事实上我想以编程方式进行。

标签: ios cocoa-touch separation-of-concerns architectural-patterns


【解决方案1】:

在 UIViewController 中构建视图层次结构的标准位置是 -viewDidLoad 方法。每当创建 UIViewController 的视图时,都会调用该方法。如果适用,将从 NIB/Storyboard 加载视图控制器的视图;你的插座将被连接起来;然后调用-viewDidLoad 让您执行进一步的自定义:

- (void)viewDidLoad
{
    [super viewDidLoad];

    UILabel *aLabel = [[UILabel alloc] initWithFrame:CGRectMake(0.0,0.0,100.0,40.0)];
    [self.view addSubView:aLabel];
}

在 Cocoa/Cocoa Touch 中,您并不总是希望像在 Java 中那样子类化所有内容。通常还有其他首选方式来扩展内置类中的功能,例如 Objective-C 类别、委托和预定义属性。

当然可以用另一种方式来做这种事情,但这是最“可可”的方式。实际上,最“类似 Cocoa”的方式是在 Interface Builder 中创建视图层次结构,但如果您想以编程方式进行,这是通常的方式。

【讨论】:

    猜你喜欢
    • 2011-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多