gpt4 book ai didi

ios - 尝试从界面生成器加载 Nib

转载 作者:行者123 更新时间:2023-11-29 01:57:19 25 4
gpt4 key购买 nike

我有一个基于 UIView 的类,它有自己的 XIB。让我们调用这个类 MyClass。所以我有 MyClass.xibMyClass.hMyClass.m

我在 Storyboard上有一个 UIView 对象,我将该对象的类设置为 MyClass

我创建了一个新的 UIView XIB,在 XIB 中,我将文件所有者的类更改为 MyClass。我不知道我是否必须在 XIB 内部进行更多连接。

我想要的是: Storyboard加载 MyClass.m 并加载 MyClass.xib,因此我有这个初始化代码:

- (instancetype)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
NSString *className = NSStringFromClass([self class]);
self.view = [[[NSBundle mainBundle] loadNibNamed:className owner:self options:nil] firstObject];
[self addSubview:self.view];
return self;
}
return nil;
}

问题是这段代码进入了无限循环。我猜 loadNibNamed 再次调用 initWithCoder: 并且应用程序崩溃了。

我该怎么做?为什么会出现循环,是否还有必须在 xib 内部建立的更多连接?

最佳答案

让我们像下面那样

例如在 awakeFromNib 方法上启动它

MyClass.m 文件中

- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if(self)
{
//set up hear
}
return self;
}

- (instancetype)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if(self)
{

}
return self;
}


- (void)awakeFromNib
{
[super awakeFromNib];
//set up hear
NSString *className = NSStringFromClass([self class]);
UIView *view = [[[NSBundle mainBundle] loadNibNamed:className owner:self options:nil] firstObject];
[self addSubview:view];
}

关于ios - 尝试从界面生成器加载 Nib ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30700183/

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