Objective c 显示包含其他UIView的UIView子类

Objective c 显示包含其他UIView的UIView子类,objective-c,ios4,Objective C,Ios4,我想在单个UIView中打包一些UIView,如UIButton、UIImageView。 当我尝试显示该视图时,它不会显示在我的RootViewController上: 以下是my UIView子类的代码: #import "Hover.h" @implementation Hover - (id)init{ self = [super init]; if (self) { // Initialization code UIImage *h

我想在单个UIView中打包一些UIView,如UIButton、UIImageView。 当我尝试显示该视图时,它不会显示在我的RootViewController上:

以下是my UIView子类的代码:

#import "Hover.h"

@implementation Hover


- (id)init{
    self = [super init];
    if (self) {
        // Initialization code
        UIImage *hover = [UIImage imageNamed:@"Hover.png"];
        UIImageView *imageView = [[UIImageView alloc] init];
        imageView.image = hover;
        imageView.frame = CGRectMake(0, 0, hover.size.width, hover.size.height);
        imageView.alpha = 0.75;
        [self addSubview:imageView];
        [imageView release];
    }
    return self;
}
下面是RootViewController类:

- (void)viewDidLoad
{

    Hover *hover = [[Hover alloc] init];
    [self.navigationController.view addSubview:hover];
    [hover release];


    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

“悬停视图”不显示!但是,当我将单个UIImageView添加到我的RootViewController时,它就可以工作了

为了让视图显示,您应该覆盖
-(id)initWithFrame:(CGRect)帧,而不是编写自定义初始值设定项

        - (void)viewDidLoad
        {
            [super viewDidLoad];

            Hover *hover = [[Hover alloc] init];

            [self.navigationController.visibleViewController.view addSubview:hover];

            [hover release];



                // Do any additional setup after loading the view, typically from a nib.
        }
试着这样做:

-(id)initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];
    if(self) {
        // do init here...
    }
    return self;
}

另外,在
-(void)viewDidLoad中方法,首先发送
[super viewDidLoad],然后alloc/init视图。

一眼就能猜到:如果您使用的是navigationcontroller,那么应该使用RootViewController初始化。无法直接将视图添加到navigationcontroller,请改用推送


Marcus

您还需要覆盖
UIView
的指定初始值设定项,即
initWithFrame:
,以确保您的视图已正确初始化。它工作正常,只需将[super viewDidLoad]移到顶部即可!感谢查看
UIView
的文档,关于初始值设定项。。。欢迎复制/粘贴,请解释?我们必须将视图添加到visibleviewcontroller的导航控制器视图中,否则它将无法显示