我有一个自定义UIView
我以这种方式加载
- (id)initWithFrame:(CGRect)frame withDelegate:(id)del
{
self = [super initWithFrame:frame];
UIView *myView;
if (self)
{
NSArray* nibViews = [[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class])
owner:self
options:nil];
for (id object in nibViews)
{
if ([object isKindOfClass:[self class]])
myView = object;
}
myView.frame = frame;
myView.backgroundColor = [UIColor clearColor];
[self addSubview: myView];
}
self.delegate = del;
return self;
}
当UIView方法返回self
时,在Interface Builder
中链接的所有出口都是nil
时,加载这样的视图。这不是正确的方法吗?
答案 0 :(得分:0)
使用此方法从bundle
加载特定的xibUINib *nib = [UINib nibWithNibName:NSStringFromClass([self class]) bundle:nil];
答案 1 :(得分:0)
试试这个:
self = [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class])
owner:self
options:nil] objectAtIndex:0];
答案 2 :(得分:0)
使用此
myView =[[NSBundle mainBundle] loadNibNamed:NSStringFromClass(self.class) owner:self options:nil].firstObject];
或者简单一点,你可以使用
myView = [nibViews firstObject]
答案 3 :(得分:0)
据我所知,您在xid中提供IBOutlet,当您尝试加载视图时,您提供的这些值为nil。这是预期的,因为您创建onew viwe并将xib中的视图添加为子视图。所以parrent视图没有设置这个值。 要解决这个问题,你需要在加载视图时重做方法。 请尝试使用此:
+ (id)createWithFrame:(CGRect)frame withDelegate:(id)del
{
NSArray* nibViews = [[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class])
owner:nil
options:nil];
<Provide class name> *myView = nibViews[0];
myView.frame = frame;
myView.backgroundColor = [UIColor clearColor];
myView.delegate = del;
return myView;
}