Objective c 显示包含其他UIView的UIView子类
我想在单个UIView中打包一些UIView,如UIButton、UIImageView。 当我尝试显示该视图时,它不会显示在我的RootViewController上: 以下是my 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
#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的导航控制器视图中,否则它将无法显示