UIView addSubview и подпредставление не отображается - PullRequest
7 голосов
/ 29 марта 2012
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    HeadViewController *headViewController = [[HeadViewController alloc] initWithNibName:@"HeadViewController" bundle:nil];    
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 120)];
    [view addSubview:headViewController.vew];
    [self.view addSubview:view];
}

HeadViewController.h:

@interface HeadViewController : UIViewController
{
    IBOutlet UIView *view;
}
@property (nonatomic, retain)IBOutlet UIView *view;
@end

и я связываю представление с владельцем файла.

И я не вижу headViewController.view.

Ответы [ 3 ]

15 голосов
/ 29 марта 2012

Прежде всего, вам не нужно определять выход view в классе HeadViewController.Он автоматически наследуется от суперкласса UIViewController.

Затем я предлагаю вам добавить представление HeadViewController непосредственно к вашему текущему виду.Например,

- (void)viewDidLoad
{
     [super viewDidLoad];
     // Do any additional setup after loading the view from its nib.
     HeadViewController *headViewController = [[HeadViewController alloc] initWithNibName:@"HeadViewController" bundle:nil];    
     headViewController.view.frame = CGRectMake(0, 0, 320, 120);
     [self.view addSubview:headViewController.view];
}

Но если вы используете ARC (автоматический подсчет ссылок), экземпляр headViewController, вероятно, будет освобожден после завершения метода viewDidLoad.Удобно (и я бы сказал, что это обязательно) назначить этот экземпляр локальной переменной в контроллере, который вы сейчас отображаете.Таким образом, вы сможете при необходимости обрабатывать компоненты его представления позже, экземпляр будет сохранен, а все остальное будет работать отлично.У вас должно быть что-то вроде:

- (void)viewDidLoad
{
     [super viewDidLoad];
     // Do any additional setup after loading the view from its nib.
     self.headViewController = [[HeadViewController alloc] initWithNibName:@"HeadViewController" bundle:nil];    
     headViewController.view.frame = CGRectMake(0, 0, 320, 120);
     [self.view addSubview:headViewController.view];
}

и

@interface MyController ()
    @property (nonatomic, strong) HeadViewController *headViewController;
@end

в определении скрытого интерфейса в начале файла реализации класса .m.

0 голосов
/ 29 декабря 2015

я отсутствует в синтаксисе

[просмотр addSubview: headViewController.view];

0 голосов
/ 22 мая 2013

Похоже на опечатку - забыл я в .view

[просмотр addSubview: headViewController.vew];

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