Objective c 自定义初始化的子类UIView-这是否正常?
我一直在寻找创建定制的、可重用的视图组件的最佳实践和其他方法。到目前为止,定制UIView子类似乎是一个不错的选择 在这种情况下,我所需要的是一个固定大小的视图,可以方便地访问标签,一个方便的初始值设定项就很好了。我可以标记标签并使用常量,但考虑到这一点(类似UIKit导入的样板文件已删除)(带ARC),它似乎没有必要: (编辑:改为类方法。我的关注点仍然没有改变,尽管总体上没有那么可疑) My MyView.xib文件唯一的顶级元素(UIView)将自定义类设置为MyView,并且出口连接到文件所有者 而且。。。这很有效。完美地它在我使用它的任何地方都能正确渲染,没有异常,没有剪辑,没有我能看到的有趣的事情 到目前为止。我有点担心:Objective c 自定义初始化的子类UIView-这是否正常?,objective-c,uiview,Objective C,Uiview,我一直在寻找创建定制的、可重用的视图组件的最佳实践和其他方法。到目前为止,定制UIView子类似乎是一个不错的选择 在这种情况下,我所需要的是一个固定大小的视图,可以方便地访问标签,一个方便的初始值设定项就很好了。我可以标记标签并使用常量,但考虑到这一点(类似UIKit导入的样板文件已删除)(带ARC),它似乎没有必要: (编辑:改为类方法。我的关注点仍然没有改变,尽管总体上没有那么可疑) My MyView.xib文件唯一的顶级元素(UIView)将自定义类设置为MyView,并且出口连接到文
有没有比我更有经验的人愿意把他们的大脑借给我一点?这是个好主意吗?一个可怕的“天哪,你在想什么”的主意?有惊喜等着我吗?关于如何创建这样的简单自定义视图,我是否应该阅读一些内容?您应该阅读,还有。初始化者并不难,但是有一些微妙的问题可能会困扰你,正如你在评论中已经提到的那样,你可以从你当前的代码中发现。一般来说,这种技术应该是好的。由于您将类方法作为“方便的初始值设定项”调用,
self
引用类对象,并且不会更改,因此可以在那里引用它。这并不像在初始值设定项中旋转self,这更复杂,但可以正确完成
在上面的例子中,当您从Nib加载视图时,只会调用
initWithCoder:
初始值设定项。第一行中“self”的三个用法实际上非常可怕,特别是因为您更改了self,并且没有释放旧的self。更不用说nib中使用“文件所有者”的任何内容都会让人大吃一惊。作为一个类方法,它可能更有意义。哈,这是一个很好的观点——尤其是所有者:case。事实上,我想我现在就改变。改变-谢谢:)这是漫长的一天,我可能没有完全正确地思考。这更有意义。我没有看到任何特别可疑的东西--[self class]
可以改为self
,而+with text:
这个名字不是很地道,但仅此而已。再次感谢[self class]——我想这在类方法中是不必要的。我会把这个问题留待讨论,以防其他人有其他事情需要我去处理:)
// .h file
@interface MyView : UIView
@property (nonatomic, weak) IBOutlet UILabel *label;
+ (id)withText:(NSString *)text;
@end
// .m file
@implementation MyView
+ (id)withText:(NSString *)text {
MyView *view = [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class])
owner:nil
options:nil] objectAtIndex:0];
view.label.text = text;
return view;
}
@end