iOS5 Назначьте .xib пользовательскому классу UIView - PullRequest
6 голосов
/ 02 февраля 2012

HI у меня есть собственный класс представления, который загружается и помещается в мой основной вид, используя следующий код. Причина в том, что я хочу заполнить его другим содержимым, чтобы вместо того, чтобы создавать представление в коде каждый раз, если я создаю собственный класс, я могу повторно использовать его в цикле и т. Д. ярлык кнопок и т. д.

Но вместо того, чтобы писать вручную все это, я подумал, что если я создам новое представление пользовательского интерфейса, то создам визуально мои текстовые поля, метки и кнопки в этом представлении.

Затем подключите его к моему пользовательскому классу.

Но здесь у меня проблема, как мне подключить этот xib-файл вида, чтобы он был виден при размещении в моем коде. Я назначил атрибут пользовательского класса в xib-файле своему пользовательскому файлу, но что еще мне не хватает?

.h Файл:

 #import <UIKit/UIKit.h>

 @interface blogView : UIView

 @end

.m Файл:

 #import "blogView.h"

 @implementation blogView

 - (id)init
 {
     self = [super initWithFrame:CGRectMake(0, 0, 478, 220)];
     if (self != nil)
     {
         NSLog(@"Blog View loaded");

         self.backgroundColor = [UIColor yellowColor];

         UILabel *titleLbl = [[UILabel alloc] initWithFrame:CGRectMake(20, 20, 400, 40)];
         [titleLbl setText:@"This is the Title"];

         [self addSubview:titleLbl];

     }
     return self;
 }

 @end

мой xib-файл имеет то же имя blogView.xib, что и пользовательский интерфейс View.

В моем главном контроллере представления и в ViewDidLoad у меня есть

  blogView *blogItem = [[blogView alloc]init];
  [self.view addSubview:blogItem];

Когда я запускаю это все работает нормально, но я хотел бы сослаться на файл .xib, чтобы сэкономить время и т. Д. Спасибо

Ответы [ 3 ]

14 голосов
/ 02 февраля 2012

Хорошо, осмотревшись вокруг и попробовав кусочки подсказок и предположений, мне удалось сделать это со следующим:

В моем файле .m я разместил / изменил следующее:

  self = [super init];
  if (self != nil)
      {      
          NSArray *theView =  [[NSBundle mainBundle] loadNibNamed:@"blogView" owner:self options:nil];
          UIView *nv = [theView objectAtIndex:0];

    .. rest of code.

   [self addSubview:nv];

 .. rest of code.

Большое спасибо

4 голосов
/ 12 июля 2012

Я боролся с этим в течение часа, когда переименовал свой класс viewcontroller.Это то, что сработало для меня в Xcode 5

  1. Перейдите в свой файл XIB
  2. Нажмите на прозрачную рамку владельца файла слева
  3. Откройте вкладку проверок (Третья кнопка справа в разделе «Просмотр» - между редактором и организатором)
  4. Перейдите к своему инспектору удостоверений (3-й слева) под вкладкой представления организатора редактора.
  5. Исправьте пользовательский класс -Опция класса для любого класса, на который вы хотите, чтобы он отвечал.

Позвольте мне просто сказать, что я был чрезвычайно раздражен после того, как потратил время на это

0 голосов
/ 02 февраля 2012

Возможно, вы захотите создать контроллер для вашего представления и загрузить его, используя initWithNibName: bundle:

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