Hello StackOverflow。
UIView
,以便从XIB
加载自己
Xcode中的文件。为此,我完成了以下初步步骤:
UIView
子类。XIB
文件。 然后,我将所需的所有子视图添加到XIB
文件中,并在IBOutlet Properties
子类中添加了相应的UIView
。
我看了this video向我展示如何正确连接插座并设置文件所有者。视频指示我做以下事情:
XIB
中将UIView类设置为子类。 Time link File's Owner
设置为UIView
中的XIB
子类:Time Link initWithCoder
文件中初始化自定义UIView
,请覆盖XIB
like (image)。 initWithFrame
,请覆盖UIView
like (image)。很酷,我已经做了所有这些事情,并选择以编程方式初始化UIView
。
请参阅我的UIView
子类实施文件:
#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
我还有一个image here个XIB文件的所有者和IBOutlet
个UIView
链接,从CXHostsTableViewCellContentView *scrollContentView = [[CXHostsTableViewCellContentView alloc]init];
基地到文件所有者的商店。
是的,所以一切看起来都不错,运行这个应该没问题吗?
不,每当我初始化这个子视图并呈现它时,我都会崩溃:
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
//...
}
我真的不知道如何解决这个问题,因为我确信我正在遵循所有这些步骤。我用谷歌搜索并遇到,它有相同的症状,但答案与我正在使用的代码相同,而this question的答案相互矛盾。
我不知道此时该怎么做,或者导致崩溃的原因。我知道,如果我没有连接任何插座,它就有效。但话说回来,也没有任何表现。
答案 0 :(得分:0)
我认为当您为scrollContentView对象分配内存时,您将遇到问题。 所以,尝试用Frame分配内存。
即 在.m文件中写下
(无效)myAllocation {
//做你的东西
}
(ID)initWithFrame:方法(的CGRect)aRect {
self = [super initWithFrame:aRect];
if(self) { [self myAllocation]; }
返回自我;
}
(ID)的initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder]; 如果(自我) { [self myAllocation]; }
返回自我;
}
CXHostsTableViewCellContentView * scrollContentView = [[CXHostsTableViewCellContentView alloc] initWithFrame:CGRectMake(0,10,0,20)];