Доступ к родительскому представлению при добавлении подпредставления

У меня есть ViewController, в котором есть 2 NSView разных размеров. Я хочу добавить представление пользовательского ViewController в качестве подпредставления к обоим из этих NSView и иметь динамический размер для заполнения (два родительских представления). Я могу сделать это очень хорошо в файле реализации для основного макета, но это много кода. Вместо этого я хотел бы, чтобы мой пользовательский ViewController выполнял всю работу. Для этого мне нужно знать высоту и ширину представления, в которое я добавляю свое пользовательское представление. Есть свойство parentViewController, но оно мне ничего не дает. Есть ли способ сослаться на представление, к которому добавляется представление?

В моем пользовательском методе ViewController viewDidLoad я хотел бы иметь

[self.view setFrame:CGRectMake(0, 0, 
    self.parentViewController.view.frame.size.width, 
    self.parentViewController.view.frame.size.height)];

но высота и ширина здесь равны нулю.

Я копался в документации в течение нескольких часов, и я все еще в замешательстве. Любая помощь приветствуется.


person Ethan    schedule 05.12.2011    source источник


Ответы (1)


Свойство parentViewController должно быть установлено в первую очередь. Он будет равен нулю, если он не установлен. Вы не указали, правильно ли он установлен. Однако есть более простой способ сделать это, предполагая, что супервизор вашего представления установлен правильно. Попробуй это:

[self.view setFrame:self.superview.frame];

или сделайте прямоугольник из кадра супервизора, если вам нужно что-то там изменить.

person MadhavanRP    schedule 05.12.2011
comment
Могу ли я установить parentViewController в методе viewDidLoad моего пользовательского контроллера представления? Спасибо и за подсказку! - person Ethan; 05.12.2011
comment
вы можете сделать это, если сохраните ссылку на него в любой глобальной переменной или получите его любым другим методом. Я бы сказал, что вы должны установить его, когда вы выделяете и инициализируете свой собственный контроллер представления. - person MadhavanRP; 06.12.2011