我是否可以要求一些关于如何为一行3个UILabel创建“容器”类型视图的高级指导,以便在自定义子类UITableViewCell中使用?你会如何做到这一点,你会为这个类分类?我需要为此覆盖多少种方法? (例如layoutSubviews,其他?)
背景:
答案 0 :(得分:1)
使用哪种方法:
我想用你的第二个选项而不是其他选项,
因为如果你从UITableViewCell中继承3 UILabel
继承自定义单元格类并将它们放入UIView继承类中。
1.代码看起来更干净(尤其是您的自定义单元类)。正如你所指出的那样。
2.如果您需要超过3个UILabel或任何UIView继承视图,则您的自定义单元类中不需要进行任何更改,
我该怎么做
创建一个UIView
继承的类,将所有UILabels
添加为子视图,然后将实现提供给-(void) layoutSubviews
,为每个UILabel设置框架。
在自定义单元格中添加子类UIView作为子视图,并在-(void) layoutSubviews
方法中为其设置框架,
答案 1 :(得分:0)
您可以将UIView子类化,也可以将所有内容放在视图控制器中。我会选择第二个选项,因为你不需要自定义视图来执行复杂的操作,为此目的,子类似乎有点“太多”。
在视图控制器中创建一些实例变量(在.h中):
UILabel *label1, *label2, *label3;
然后在你的implémentation(在.m中),执行以下操作: 'viewDidLoad'方法:
// First label... Create and configure.
label1 = [[UILabel alloc] init];
// [Configure here]
[[self view] label1];
// Second label... Create and configure.
label2 = [[UILabel alloc] init];
// [Configure here]
[[self view] label2];
// Third label... Create and configure.
label3 = [[UILabel alloc] init];
// [Configure here]
[[self view] label3];
然后在'viewDidLoad'方法中:
// Release / Nillify everything.
[label1 release], label1 = nil;
[label2 release], label2 = nil;
[label3 release], label3 = nil;
在'viewDidAppear'和任何其他表示方向更改的方法中,您必须配置布局...使用父视图rect获取边界/框架,并根据您需要的布局更改3个标签几何
如果您更喜欢通过子类化UIView来完成它,您可以完全相同,但不是在viewDidLoad中进行布局,而是必须按照计划在'layoutSubviews'中进行。此外,如果您的视图来自XIB,则初始化/分配代码可能会转到'initWithCoder:',并且您的dealloc中将取消分配。
希望有所帮助, 皮尔。