0

我正在编写一个应用程序而不使用故事板/xib 来创建视图,并且不确定放置我的视图设置代码的最佳位置。我尝试了几种不同的方法,但我不确定将视图设置代码与控制器代码分开的最佳方法。

到目前为止我尝试过的方法是:

  1. 将我所有的视图设置代码(创建和定位按钮/标签)等放在控制器viewDidLoad方法中。我很确定这是一种不好的做事方式,因为您最终会在控制器中使用大量代码。

  2. 在方法内部子类UIView化和设置界面元素initWithFrame。然后,我要么将此视图添加到我的视图控制器视图之上。

    _customView = [[CustomView alloc] initWithFrame:self.view.frame];
    _customView.customLabel.text = @"Foo";
    [self.view addSubView:_customView]
    

或者我将控制器视图分配为我的customView.

_customView = [[CustomView alloc] initWithFrame:self.view.frame];
self.view = _customView;
_customView.customLabel.text = @"Foo";

在尽量让这个问题保持非主观的同时,是否有以编程方式创建 iOS 界面的最佳实践?这些方法中的任何一种都是保持视图代码和控制器代码分离和可重用的好方法吗?

4

1 回答 1

1

如果您只需要使用该视图一次,请将代码留在viewDidLoad方法中。也许您可以移动在控制器中以特定方法创建视图所需的代码。

- (void)viewDidLoad
{
    [super viewDidLoad];

    // other code here...
    [self createView];
}

此外,如果您的视图将是控制器的视图,您还可以考虑覆盖loadView方法并将代码放在那里。view来自苹果文档。

您可以覆盖此方法以手动创建视图。如果您选择这样做,请将视图层次结构的根视图分配给视图属性。

如果您需要多次实例化您的视图,我将继承 aUIView并使用委托模式与您的控制器进行通信。

如果您选择这种方法,则需要覆盖layoutSubviews方法以在您的视图中排列子项。

一个明显的例子可以在How To Make a Custom UIView in iOS 5: A 5 Star Rating View中找到。

于 2013-04-01T15:47:36.173 回答