Как связать файл nib (.xib) с UIView? - PullRequest
20 голосов
/ 27 октября 2008

У меня есть подкласс "s" UIView. Я хочу поставить некоторые кнопки и метки на с. Как связать мой подкласс UIView с файлом пера?

Ответы [ 2 ]

28 голосов
/ 27 октября 2008
  1. В Интерфейсном Разработчике создайте новый XIB с шаблоном просмотра.
    • Нажмите на вид в списке объекты в XIB (вы также должны см. «Владелец файла» и «Первый» Ответчик ").
    • Нажмите Cmd-4, чтобы открыть панель идентификации. инспектора.
    • Введите имя вашего класса в Поле «Имя класса» и push return.

Вы должны иметь возможность перетаскивать кнопки внутрь. Чтобы получить перо из кода, используйте -[NSBundle loadNibNamed:owner:options:]. Ваше представление должно быть первым объектом в возвращенном массиве.

3 голосов
/ 11 сентября 2013

В моем случае я не хотел, чтобы мой контроллер представления знал о IBOutlets из .xib моего представления. Я хотел, чтобы мой подкласс просмотра владел IBOutlets. К сожалению, в UIView нет метода initWithNibName:, поэтому я просто создал собственную категорию.

Вот что я сделал:

  • В IB нажмите на свой основной UIView, а в Identity Inspector установите класс на свой подкласс
  • В IB нажмите на «Владелец файла», а в инспекторе удостоверений установите класс для своего подкласса
  • Используйте новый метод категории initWithNibName:, чтобы создать представление.

И вот категория, которую я создал:

- (instancetype)initWithNibName:(NSString *)nibName
{
    NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:nibName owner:self options:nil];
    if (arrayOfViews.count < 1) {
        return nil;
    }

    self = arrayOfViews[0];

    return self;
}

Вдохновленный этим постом .

Обратите внимание, что пока рамка будет корректироваться автоматически, поэтому в отличие от кода в посте, мне еще не пришлось явно устанавливать рамку. Кроме того, в отличие от кода сообщения, мне нужно было установить owner:self, чтобы IBOutlets были правильно подключены.

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