2

プログラムでロードした NIB でラベルを変更しようとしています。名前付きMyViewを含むクラスを作成しましたが、使用すると変更できません:UILabel*myLabelMyViewmyLabel

MyView.h

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

MyView.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付けられたプロパティが見つからないということです。このプロパティは のサブクラスで宣言したため、ここでサブクラス名を使用する必要があります。myLabelUIViewUIView

于 2012-11-22T21:01:11.897 に答える
0

通常の UIView として宣言したため、myView を MyView にキャストする必要があります。これを試して:

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

または、単に myView を UIView ではなくタイプ MyView として宣言します

于 2012-11-22T21:02:10.773 に答える