Ios UIView:从自定义XIB加载导致崩溃
你好,斯塔克Ios UIView:从自定义XIB加载导致崩溃,ios,xcode,uiview,crash,xib,Ios,Xcode,Uiview,Crash,Xib,你好,斯塔克 我正在尝试设置一个UIView,以便它从XIB Xcode中的文件 为此,我完成了以下初始步骤: 创建了空的UIView子类 添加了一个空白的XIB文件 然后,我将所有需要的子视图添加到XIB文件中,并在UIView子类中创建相应的IBOutlet属性 我观看了演示如何正确连接插座并设置文件所有者。视频指导我做以下事情: 不要在XIB中将UIView类设置为子类 在XIB中将文件的所有者设置为UIView子类: 在UIView类型的UIView类中插入一个IBOutlet,以
- 我正在尝试设置一个
,以便它从UIView
Xcode中的文件XIB
UIView
子类XIB
文件李>
然后,我将所有需要的子视图添加到XIB
文件中,并在UIView
子类中创建相应的IBOutlet属性
我观看了演示如何正确连接插座并设置文件所有者。视频指导我做以下事情:
- 不要在
XIB
中将UIView类设置为子类李>
- 在
XIB
中将文件的所有者设置为UIView
子类:
- 在UIView类型的UIView类中插入一个IBOutlet,以便可以将XIB文件加载到该类中
- 如果要在另一个
XIB
文件中初始化自定义UIView
,请覆盖initWithCoder
李>
- 如果要在另一个类文件中以编程方式初始化自定义
ui视图
,请重写initWithFrame
很酷,我已经完成了所有这些事情,并且选择以编程方式初始化我的UIView
请参阅我的ui视图
子类实现文件:
#import "CXHostsTableViewCellContentView.h"
@implementation CXHostsTableViewCellContentView
#pragma mark Custom Initializers
-(instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
[[NSBundle mainBundle]loadNibNamed:@"CXHostsTableViewCellContentView" owner:self options:nil];
[self setBounds:self.view.bounds];
[self addSubview:self.view];
}
return self;
}
-(instancetype)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self)
{
[[NSBundle mainBundle]loadNibNamed:@"CXHostsTableViewCellContentView" owner:self options:nil];
[self addSubview:self.view];
}
return self;
}
#import <UIKit/UIKit.h>
#import "CXStyleView.h"
@interface CXHostsTableViewCellContentView : UIView
#pragma mark UIView Properties
@property (strong, nonatomic) IBOutlet UIView *view;
@property (nonatomic,weak)IBOutlet UIView *standardView;
@end
当然,我的头文件:
#import "CXHostsTableViewCellContentView.h"
@implementation CXHostsTableViewCellContentView
#pragma mark Custom Initializers
-(instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
[[NSBundle mainBundle]loadNibNamed:@"CXHostsTableViewCellContentView" owner:self options:nil];
[self setBounds:self.view.bounds];
[self addSubview:self.view];
}
return self;
}
-(instancetype)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self)
{
[[NSBundle mainBundle]loadNibNamed:@"CXHostsTableViewCellContentView" owner:self options:nil];
[self addSubview:self.view];
}
return self;
}
#import <UIKit/UIKit.h>
#import "CXStyleView.h"
@interface CXHostsTableViewCellContentView : UIView
#pragma mark UIView Properties
@property (strong, nonatomic) IBOutlet UIView *view;
@property (nonatomic,weak)IBOutlet UIView *standardView;
@end
我真的不知道如何解决这个问题,因为我确信我正确地遵循了所有这些步骤。我在谷歌上搜索了一下,发现其中有相同的症状,但答案与我使用的代码完全相同,而且回答前后矛盾
我不知道现在该怎么办,也不知道是什么导致了这次事故。我知道,如果我根本没有连接的插座,它就会工作。但话说回来,也没有显示任何内容 我认为在为scrollContentView对象分配内存时,您将面临这个问题。
所以,尝试使用帧分配内存
i、 e
将此文件写入.m文件中
- (void)myAllocation {
//do your stuff
}
- (id)initWithFrame:(CGRect)aRect {
self = [super initWithFrame:aRect];
if (self) {
[self myAllocation];
}
return self;
}
- (id)initWithCoder:(NSCoder*)aDecoder {
self = [super initWithCoder:aDecoder];
if (self) {
[self myAllocation];
}
return self;
}
我认为在为scrollContentView对象分配内存时,您将面临这个问题。
所以,尝试使用帧分配内存
i、 e
将此文件写入.m文件中
- (void)myAllocation {
//do your stuff
}
- (id)initWithFrame:(CGRect)aRect {
self = [super initWithFrame:aRect];
if (self) {
[self myAllocation];
}
return self;
}
- (id)initWithCoder:(NSCoder*)aDecoder {
self = [super initWithCoder:aDecoder];
if (self) {
[self myAllocation];
}
return self;
}
您可能需要在崩溃后继续执行,并向我们提供您在控制台中看到的内容(堆栈跟踪、异常详细信息等)@mohamede1945关于内存地址的信息非常有限。不知道名字,也不知道数字。嗨@Owatch,你修好了吗?我目前正在经历这种情况。您可能需要在崩溃后继续执行,并向我们提供您在控制台中看到的内容(堆栈跟踪、异常详细信息等)。@mohamede1945关于内存地址的信息非常有限。不知道名字,也不知道数字。嗨@Owatch,你修好了吗?我目前正在经历这种情况。我不明白你的回答,我的分配是多少?这是如何解决我的问题的?您好Owatch,您能给我发送这个示例/演示项目吗?所以,我可以帮你。我会在两小时后把它贴在这里。这是一个链接,意外地把它给了之前评论过的其他人。我的错。要模拟崩溃,只需打开应用程序并尝试访问菜单上的“主机”屏幕。我不明白你的回答,我的分配是什么?这是如何解决我的问题的?您好Owatch,您能给我发送这个示例/演示项目吗?所以,我可以帮你。我会在两小时后把它贴在这里。这是一个链接,意外地把它给了之前评论过的其他人。我的错。要模拟崩溃,只需打开应用程序并尝试访问菜单上的“主机”屏幕。