Iphone 可重用UIView作为nib文件
我使用xib文件创建了一个名为BOHeaderView的自定义UIView。我希望将此BOHeaderView加载到其他UIViewController的XIB中 我尝试在一个ViewController nib文件中添加UIView,并将其类型更改为customView。但我无法加载自定义视图。下面是customView的初始化代码Iphone 可重用UIView作为nib文件,iphone,ios,uiview,uiviewcontroller,xib,Iphone,Ios,Uiview,Uiviewcontroller,Xib,我使用xib文件创建了一个名为BOHeaderView的自定义UIView。我希望将此BOHeaderView加载到其他UIViewController的XIB中 我尝试在一个ViewController nib文件中添加UIView,并将其类型更改为customView。但我无法加载自定义视图。下面是customView的初始化代码 - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; i
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
// Custom initialization
[[NSBundle mainBundle] loadNibNamed:@"BOHeaderView" owner:self options:nil];
}
return self;
}
- (void) awakeFromNib
{
[super awakeFromNib];
// commenters report the next line causes infinite recursion, so removing it
[self customizeHeadView];
}
带有
NSBundle
的那一行应该在您要加载nib的类中。你应该在那门课上写:
CustomView*CustomView=[[NSBundle mainBundle]loadNibNamed:@“BOHeaderView”所有者:自选项:nil].lastObject代码>
它返回一个NSArray
,这就是为什么您需要lastObjct
您可以这样做:
NSArray *nibViews = [[NSBundle mainBundle] loadNibNamed:@"BOHeaderView"
owner:[[BOHeaderView alloc] init]
options:nil];
BOHeaderView *infoView = [nibViews objectAtIndex:0];
infoView.frame = CGRectMake( put your rect here );
[self addSubview:infoView];
编辑:
意思是你想说:
我也遇到了同样的问题,我用这种方式解决了它:
我在按钮上写下了下面的代码单击
RatingView *rateView = [[RatingView alloc] initWithNibName:@"RatingView" bundle:[NSBundle mainBundle]];
rateView.view.frame = CGRectMake(0,45,1024, 648);
[self.view addSubview:rateView.view];
快乐编码 上述解决方案适用于您希望以编程方式加载HeaderView的情况。我想将BOHeaderView作为子视图加载到UIViewController xib文件中。是的,我指的是您提供的链接。我知道所有者应该是BOHeaderView(自定义视图)本身。困惑于如何使用此代码以及在何处使用?它是否在UIViewController中作为子视图添加?如果我以编程方式在任何viewcontroller中加载自定义视图,则需要上面的代码段。但是,我正在UIViewController nib文件中加载自定义视图,是否仍应保留您编写的代码。。很抱歉,不清楚。不,根本不需要代码。我认为您可以使用链接上给出的答案中的代码。在链接中,答案是:如果您不想在代码中创建视图实例,可以在NIB文件中添加“UIView”,并在inspector窗口(命令->4->类下拉菜单)中设置其类类型。但这不是在我的viewcontroller xib中加载的方式。只有我看到的空旷的景色。