#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. Чтобы заставить его работать, выполните следующие действия:
- Сделайте свой
playerObject
inherit fromUIView
вместоUIControl
. - Откройте ваш
.xib
файл. - Выберите корневой вид на левой панели.
- На правой панели перейдите на вкладку Identity Inspector.
- Введите
playerObject
в первое текстовое поле «Класс». - Убедитесь, что вы подключили все свои
IBOutlets
в Interface Builder. -
Выполните следующие действия, чтобы загрузить свой пользовательский
UIView
элемент из.xib
файла:playerObject *newPlayer = (playerObject *)[[[NSBundle mainBundle] loadNibNamed:@"MyXibFilename" owner:nil options:nil] firstObject]; newPlayer.playerNameLabel = @"Lionel Messi";
Примечание в сторону: я настоятельно рекомендую вам начать использовать «пространства имен» для ваших классов (это всего лишь двухбуквенный префикс), например XXPlayerObject
, с XX, который, по вашему мнению, описывает ваше приложение / модуль. Все другие связанные пользовательские классы должны «совместно использовать» это пространство имен. Посмотрите, что Apple делает со своими классами.
Я надеюсь, что это поможет вам!
Комментарии:
1. @dgee4 Пожалуйста, дайте мне знать, если это решило вашу проблему. Спасибо.
2. К вашему сведению, приведенный выше пинг не работает для пинга пользователя, поскольку он еще не участвовал в этом сообщении.