带有 nib 子视图的自定义 UIVIew 无
Posted
技术标签:
【中文标题】带有 nib 子视图的自定义 UIVIew 无【英文标题】:custom UIVIew with nib subviews nil 【发布时间】:2017-01-07 21:12:52 【问题描述】:我使用 xib 文件创建了一个简单的自定义 UIView,我将 xib 视图连接到我的类,然后将我的 IBOutles 链接到子视图,之后我使用 initWithFrame 创建视图并以编程方式将其添加到我的父视图中
- (id)initWithFrame:(CGRect)frame
self = [super initWithFrame:frame];
if (self)
NSArray *objects = [[NSBundle mainBundle] loadNibNamed:@"AddAlarmView" owner:self options:nil];
_scrollView = (UIScrollView *)[objects objectAtIndex:0];
[self addSubview:_scrollView];
return self;
问题是所有子视图都是 nil....如果我尝试获取 customView.textFeild1 它是 nil....为什么?错误在哪里?
【问题讨论】:
你的 ScrollView 对象是在 xib 中还是 UIView 在 xib 中? 【参考方案1】:您应该尝试像这样从 Xib 获取您的 UIView 对象。
- (id)initWithFrame:(CGRect)frame
NSArray *objects = [[NSBundle mainBundle] loadNibNamed:@"AddAlarmView" owner:self options:nil];
self = (YourClassName *)[objects objectAtIndex:0];
self.frame = frame;
return self;
您无需在 IBOutLets 中再次添加子视图。它们已经是您在 xib 文件中的视图的子视图。 只需加载该 xib 文件并将其分配给您自己并根据参数更新您的框架。
【讨论】:
我是这样解决的:self = [[[NSBundle mainBundle] loadNibNamed:@"AddAlarmView" owner:self options:nil] lastObject];以上是关于带有 nib 子视图的自定义 UIVIew 无的主要内容,如果未能解决你的问题,请参考以下文章
如何在加载了 nib 文件的 UIView 中调整子视图的大小