Показать подкласс UIView, который содержит другие UIViews - PullRequest
2 голосов
/ 19 июля 2011

Я хочу упаковать некоторые UIViews, такие как UIButton, UIImageView в один UIView.Когда я пытаюсь отобразить это представление, оно не отображается в моем RootViewController:

Вот код моего подкласса 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, он работает!

Ответы [ 3 ]

2 голосов
/ 19 июля 2011

Чтобы ваше представление отображалось, вы должны переопределить -(id)initWithFrame:(CGRect)frame; вместо написания пользовательского инициализатора.

Попробуйте сделать так:

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

Также в -(void)viewDidLoad; метод, сначала отправьте [super viewDidLoad];, а затем распределите / инициализируйте представление.

1 голос
/ 19 июля 2011
        - (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.
        }
0 голосов
/ 19 июля 2011

Просто быстрое предположение с первого взгляда: если вы используете навигационный контроллер, вы должны initWithRootViewController.Вы не можете добавить представление к навигационному контроллеру напрямую, вместо этого используйте push.

HTH Marcus

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...