Ios 如何在XIB中正确加载和显示自定义UIView?
任务很简单:Ios 如何在XIB中正确加载和显示自定义UIView?,ios,objective-c,uiview,xib,Ios,Objective C,Uiview,Xib,任务很简单: 我们有一个XIB 我们有一个自定义UIView类实现。没有XIB 我们可以向XIB添加感谢IB UIView元素,并将其类设置为自定义UIView类 我们可以创建自定义UIView类的出口,并将自定义UIView从XIB连接到它 但似乎我们应该在加载XIB时执行额外的步骤来显示自定义UIView(及其元素——标签、图像等) 哪一步 UPD:任务已完成。我们应该使用initWithCoder。引用自:«从代码动态创建UIView时调用initWithFrame。从.nib文件加载的视
UPD:任务已完成。我们应该使用initWithCoder。引用自:«从代码动态创建UIView时调用initWithFrame。从.nib文件加载的视图总是使用initWithCoder进行实例化,编码器负责从.nib文件中读取设置。感谢提问。如果这些元素不在nib/xib中,您可以在initWithCoder中添加/创建它们:您可以执行以下操作:
//MYCustomView.h
@interface MYCustomView : UIView
@end
//MYCustomView.m
@implementation MYCustomView
- (void)setup {
// Do custom stuffs here...
}
- (id)init {
self = [super init];
if (self) {
[self setup];
}
return self;
}
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
[self setup];
}
return self;
}
- (id)initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if (self) {
[self setup];
}
return self;
}
@end
你读过课程参考中的“分类UIView”注释吗?您需要通过addSubView以编程方式添加按钮、标签等,或者从故事板或XIB加载视图。如果不使用标准控件,也可以实现drawRect。通常情况下,您不会以这种方式将UIview子类化-您会使用一个由XIB或故事板驱动的UIViewController子类谢谢您的回复。等一下。假设我们有UIView,它已经添加了子视图元素。因为我们可以看到应用程序显示了来自XIB的UIView,所以我们可以得出结论,IB为我们生成了自定义UIView的代码和addSubView。但是为什么我们看不到里面的元素呢?它就像一个简单的链:A->B->C。现在C显示B,但不是A的内部。奇怪。