2013-06-02 3 views
0

Ушел от программирования 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)

Я хотел бы иметь доступ к метке (изменить ее текст, свойства и т. д.) с моего основного контроллера просмотра.

Любая помощь очень ценится. Спасибо.

+0

Для устранения одной категории ошибок следует опустить явные объявления переменных экземпляра. Просто объявите свои свойства, и компилятор теперь автоматически создаст переменные экземпляра для вас. Определяя свой собственный, вы открываете потенциал путаницы между вашими явно объявленными переменными экземпляра и теми, которые компилятор теперь синтезирует для вас. – Rob

+0

Вы не показали нам (а), как вы создали 'word1View'; ни b) как 'word1View' создает' testLabel', поэтому вам сложно советовать. – Rob

+0

Спасибо @Rob. word1View был создан в IB и добавлен в основное представление моего главного контроллера. Благодаря другому ответу я создал testLabel, используя word1View.testLabel = [[UILabel alloc] initWithFrame: CGRectMake (10, 10, 30, 10)]; Теперь текст, который я помещаю в метку, правильно назначен. Проблема заключается в том, что метка не отображается в представлении. Как создать ярлык в представлении? – Gil

ответ

0

Вам необходимо создать экземпляр своего UILabel и придать ему текст.

wordView1 = [[UILabel alloc] init]; 
wordView.text = @"Some Text"; 
+0

Спасибо @Jeff. Просто FYI, word1View был создан в IB и добавлен в основной вид моего главного контроллера. Я принял ваш совет и добавил: word1View.testLabel = [[UILabel alloc] initWithFrame: CGRectMake (10, 10, 30, 10)]; Теперь текст, который я помещаю в метку, правильно назначен. Проблема заключается в том, что метка не отображается в представлении. Как создать ярлык в представлении? – Gil

+0

Вам нужно 'addSubview' для любого элемента управления, который вы хотите добавить к своему представлению. – Rob

Смежные вопросы