无法在以编程方式生成的UIView中更改标签

时间:2012-11-22 20:58:31

标签: ios uiview nib

我正在尝试使用以编程方式加载的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"; 的理解存在一些愚蠢的错误。

2 个答案:

答案 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