Загрузить UIView из NIB как подпредставление другого UIView, загруженного также из NIB - PullRequest
3 голосов
/ 25 марта 2011

Идея в основном такова:
Внутри myViewController NIB У меня есть UIView в качестве подпредставления, со связями с IBOutlet в MyViewController классе.Я хочу также загрузить подпредставление UIView из NIB.Подвид также имеет связанный с ним класс.Но подпредставление не показывается.Вот что я делаю

на MyViewController.h

@interface MyViewController : UIViewController {
    IBOutlet SubView *subView;     // this outlet is connected to an empty UIView on IB
}
@end

на MyViewController.m

-(id)init {
    if ((self = [super init])) {
        // load the main view 
        [[NSBundle mainBundle] loadNibNamed:@"myViewController" owner:self options:nil];
        // load the sub view from another NIB
        self.subView = [[[NSBundle mainBundle] loadNibNamed:@"subView" owner:self options:nil] objectAtIndex:0];
    }
}

SubView.h определяется как:

@interface SubView : UIView {
}
@end

Что я делаю не так?

Ответы [ 2 ]

4 голосов
/ 25 марта 2011

Что вам нужно сделать, это установить для владельца файла значение UIViewController, подключите свой просмотр к свойству view владельца файла, сохраните свое перо. В своем коде загрузите перо так:

UIViewController* c = [[UIViewController alloc] initWithNibName:@"Foo" bundle:nil];
SubView* subView = [c view];

Должен быть на гонках.

И последнее замечание: тип subView должен совпадать с тем, что определено как имя класса в конструкторе интерфейса. Если там есть SubView, то можно безопасно объявить его как SubView* в коде.

3 голосов
/ 25 марта 2011

GianPac - бесстыдная самореклама, но я сделал пост в блоге об этом около месяца назад.Не стесняйтесь игнорировать код, связанный с тенями.

http://nathanhjones.com/2011/02/20/creating-reusable-uiviews-with-a-drop-shadow-tutorial/

Кроме того, я (благодаря советам нескольких человек) избегаю иметь более одного контроллера вида на моем «представлении»,Метод, который я обрисовал в общих чертах выше, позволяет вам выполнить это и все еще использовать IB для создания макета / выходов.

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