Ушел от программирования XCode некоторое время, теперь я возвращаюсь назад и чувствую, что я начинаю ВСЕ. У меня есть простой пример, который сводит меня с ума. Я создал подкласс класса UIView под названием Word1View и добавил его в свою раскадровку. Я объявил это как свойство в главном контроллере представления и привязал его как IBOutlet к основному виду. Я могу использовать это представление, используя Core Graphics без проблем (прямоугольники, линии и т. Д.). Вот код в файле .h. Собственность синтезирована правильно в «.m»Как я могу манипулировать объектами в subView?
#import <UIKit/UIKit.h>
#import "Word1View.h"
@interface Board3ViewController : UIViewController
{
Word1View *word1View;
}
@property (nonatomic, strong) IBOutlet Word1View *word1View;
@end
Теперь вот в чем проблема. Я добавил UILabel (я буду добавлять UIImageFiles позже) в Word1View.h это выглядит как так:
#import <UIKit/UIKit.h>
@interface Word1View : UIView
{
UILabel *testLabel;
}
@property (nonatomic, retain) UILabel *testLabel;
@end
Это свойство также синтезировали правильно. UILabel был добавлен к представлению в главной раскадровке. Я попытался сделать это IBOutlet, но не смог подключить его до тех пор, пока он был частью subview. Я пытался получить доступ к UILabel в моем главном контроллере представления, как так:
[super viewDidLoad];
[self.view addSubview:word1View];
NSLog(@"Label text is: %@", word1View.testLabel.text);
У меня нет никакого доступа к этой метке, о чем свидетельствует выход в NSLog, которая: Board3 [14520: c07] Ярлык текст is: (null)
Я хотел бы иметь доступ к метке (изменить ее текст, свойства и т. д.) с моего основного контроллера просмотра.
Любая помощь очень ценится. Спасибо.
Для устранения одной категории ошибок следует опустить явные объявления переменных экземпляра. Просто объявите свои свойства, и компилятор теперь автоматически создаст переменные экземпляра для вас. Определяя свой собственный, вы открываете потенциал путаницы между вашими явно объявленными переменными экземпляра и теми, которые компилятор теперь синтезирует для вас. – Rob
Вы не показали нам (а), как вы создали 'word1View'; ни b) как 'word1View' создает' testLabel', поэтому вам сложно советовать. – Rob
Спасибо @Rob. word1View был создан в IB и добавлен в основное представление моего главного контроллера. Благодаря другому ответу я создал testLabel, используя word1View.testLabel = [[UILabel alloc] initWithFrame: CGRectMake (10, 10, 30, 10)]; Теперь текст, который я помещаю в метку, правильно назначен. Проблема заключается в том, что метка не отображается в представлении. Как создать ярлык в представлении? – Gil