我正在尝试使用以编程方式加载的NIB更改标签。我创建了一个班级MyView
,其中包含一个名为UILabel*
的{{1}},但当我使用myLabel
时,我无法更改MyView
:
MyView.h
myLabel
MyView.m
@interface MyView : UIView
{
UIView *view;
UILabel *myLabel;
}
@property (nonatomic, retain) IBOutlet UIView *view;
@property (nonatomic, retain) IBOutlet UILabel *myLabel;
所以当我初始化@implementation MyView
@synthesize myLabel, view;
- (id)initWithFrame:(CGRect)frame
{
...
MyView
我无法更改标签,因为UIView *myView = [[MyView alloc] initWithFrame:CGRectMake(0,0,100,100)];
未标识:
myLabel
我知道我的逻辑或对myView.myLabel.text = @"New Label Text";
的理解存在一些愚蠢的错误。
答案 0 :(得分:0)
您需要将其声明为,
MyView *myView = [[MyView alloc] initWithFrame:CGRectMake(0,0,100,100)];
myView.myLabel.text = @"New Label Text";
如果您使用UIView
,则说它无法在myLabel
类中找到名为UIView
的属性。由于您已在UIView
的子类中声明了此属性,因此您需要在此处使用子类名称。
答案 1 :(得分:0)
您需要将myView转换为MyView,因为您将其声明为普通的UIView。试试这个:
((MyView *)self.myView).myLabel.text = @"New Label Text";
或者只是将myView声明为MyView类型而不是UIView