Создайте новый элемент управления iOS

#ios #objective-c #uicontrol

#iOS #objective-c #UIControl

Вопрос:

Я пытаюсь создать новый элемент управления для Xcode для внедрения в новое приложение iOS. Конечная идея состоит в том, чтобы графически отобразить формирование футбольной команды. Я понимаю, что все это может быть закодировано программно, но я хочу создать новый элемент управления для представления игрока, а затем соответствующим образом загрузить формирование, поскольку в будущем я могу добавить другую информацию об игроке в элемент управления.

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

[Я включил правильные заголовки, подключил ярлык и установил xib в новый класс]

заголовочный файл для xib:

 @interface playerObject : UIControl
@property (nonatomic, strong) NSString *playerNameLabel;
@end    
  

файл реализации для xib:

 #import "playerObject.h"
@interface playerObject ()
@property (strong, nonatomic) IBOutlet UILabel *nameLabel;
@end

@implementation playerObject
- (void) setPlayerNameLabel:(NSString *)playerNameLabel
{
    self.nameLabel.text = playerNameLabel;
}
  

Просмотр файла реализации контроллера:

 - (void)viewDidLoad
{
    ...
    playerObject *newPlayer = [[playerObject alloc] initWithFrame:CGRectMake(10, 10, 100, 150)];

    [newPlayer setPlayerNameLabel:@"TEST"];
    [newPlayer setBackgroundColor:[UIColor redColor]];
    [self.view addSubview:newPlayer];

}
  

Заранее спасибо!

Ответ №1:

Возможно, вы создали файл xib, содержащий метку, однако, похоже, вы его не используете. Вы создаете новый экземпляр playerObject класса вместо того, чтобы загружать его из файла xib. Вместо этого взгляните на UINib документацию по классу.

Ответ №2:

Вы создаете экземпляр своего пользовательского представления, не загружая его из файла .xib. Чтобы заставить его работать, выполните следующие действия:

  1. Сделайте свой playerObject inherit from UIView вместо UIControl .
  2. Откройте ваш .xib файл.
  3. Выберите корневой вид на левой панели.
  4. На правой панели перейдите на вкладку Identity Inspector.
  5. Введите playerObject в первое текстовое поле «Класс».
  6. Убедитесь, что вы подключили все свои IBOutlets в Interface Builder.
  7. Выполните следующие действия, чтобы загрузить свой пользовательский UIView элемент из .xib файла:

     playerObject *newPlayer = (playerObject *)[[[NSBundle mainBundle] loadNibNamed:@"MyXibFilename" owner:nil options:nil] firstObject];
    newPlayer.playerNameLabel = @"Lionel Messi";
      

Примечание в сторону: я настоятельно рекомендую вам начать использовать «пространства имен» для ваших классов (это всего лишь двухбуквенный префикс), например XXPlayerObject , с XX, который, по вашему мнению, описывает ваше приложение / модуль. Все другие связанные пользовательские классы должны «совместно использовать» это пространство имен. Посмотрите, что Apple делает со своими классами.

Я надеюсь, что это поможет вам!

Комментарии:

1. @dgee4 Пожалуйста, дайте мне знать, если это решило вашу проблему. Спасибо.

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