gpt4 book ai didi

带有 NIB 文件的 iOS UIView 子类不显示 IB 中设计的 UI

转载 作者:行者123 更新时间:2023-11-29 13:44:12 25 4
gpt4 key购买 nike

我有一个继承自 UIView 的类,这个类有一些我在 IB 中放置在它上面的控件。

然后,在我的主视图 Controller 的 NIB 文件中,我放置了一个 View ,并将类更改为我的子类,并为子类创建了一个导出。但是,当我运行我的应用程序时,该应用程序不显示我放置在子类上的 UI,它只是空白。

我在子类中收到 initWithCoder 和 awakeFromNib 消息,这是子类 .m 文件的基本内容:

#import "AnalyticsDetailView.h"

@implementation AnalyticsDetailView

- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
return self;
}

- (void)awakeFromNib
{
[super awakeFromNib];
}

- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
NSArray *v = [[NSBundle mainBundle] loadNibNamed:@"AnalyticsDetailView" owner:self options:nil];
[self addSubview:[v objectAtIndex:0]];
}

return self;
}

- (void)dealloc
{
[super dealloc];
}

@end

我不确定 initWithFrame 是否正确,但由于该方法未触发,我怀疑此时它并不重要。如果我在看到子类方法触发后在我的应用程序中放置一个断点,我可以查看导出子类并且框架与我在 IB 中创建的相同。

有人对我遗漏或做错的事情有任何建议(缺少代码、错误的 IB 连接等)吗?谢谢。

最佳答案

要显示您的界面,您需要从父 View Controller 显式实例化 AnalyticsDetailView。

因此,在 viewDidLoad:viewWillAppear: 方法中,您将添加一行内容:

AnalyticsDetailView * newView = [[AnalyticsDetailView alloc] initWithFrame: CGRectMake(x,y,height,width)]; 
[parentView addSubview: newView];
[newView release]; // subview retains for us

关于带有 NIB 文件的 iOS UIView 子类不显示 IB 中设计的 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8128481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com