2

我正在尝试使用以编程方式加载的 NIB 更改标签。我创建了一个MyView包含UILabel*命名的类,myLabel但是当我使用时MyView我无法更改myLabel

我的视图.h

@interface MyView : UIView
{
    UIView *view;
    UILabel *myLabel;
}
@property (nonatomic, retain) IBOutlet UIView *view;
@property (nonatomic, retain) IBOutlet UILabel *myLabel;

我的视图.m

@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";

我知道我的逻辑或对UIView.

4

2 回答 2

0

您需要将其声明为,

MyView *myView = [[MyView alloc] initWithFrame:CGRectMake(0,0,100,100)];
myView.myLabel.text = @"New Label Text";

如果您使用UIView,则表示它找不到myLabelUIView类中命名的属性。由于您已在 的子类中声明了此属性UIView,因此您需要在此处使用子类名称。

于 2012-11-22T21:01:11.897 回答
0

您需要将 myView 转换为 MyView,因为您将其声明为普通 UIView。试试这个:

((MyView *)self.myView).myLabel.text = @"New Label Text";

或者简单地将您的 myView 声明为类型 MyView 而不是 UIView

于 2012-11-22T21:02:10.773 回答