Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 可重用UIView作为nib文件_Iphone_Ios_Uiview_Uiviewcontroller_Xib - Fatal编程技术网

Iphone 可重用UIView作为nib文件

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

我使用xib文件创建了一个名为BOHeaderView的自定义UIView。我希望将此BOHeaderView加载到其他UIViewController的XIB中

我尝试在一个ViewController nib文件中添加UIView,并将其类型更改为customView。但我无法加载自定义视图。下面是customView的初始化代码

- (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中加载的方式。只有我看到的空旷的景色。