2011-07-18 12 views
0

のプロパティにアクセスすることはできませんそのプロパティのいくつかに別のクラスからアクセスします。は、私はいくつかのカスタム描画を行うには、次のサブクラスを作成しているサブクラス

DocumentIconView *iconView = [DocumentIconView documentIconWithFrame:frame 
                 previewImage:[UIImage imageNamed:@"GenericDocumentIcon.png"] 
                  title:[NSString stringWithFormat:@"test"]]; 

iconView.backgroundColor = [UIColor lightGrayColor]; // this works 
iconView.filenameLabel.backgroundColor = [UIColor darkGrayColor]; // this does not work - no error message 
[documentsView addSubview:iconView]; 

私は第1レベルのプロパティを読み書きできますが、深くはドリルできません。プロパティを読み込もうとしたときに返される値は(null)

です。サブクラス化ではかなり新しいので、ここではっきりと分かりづらいものがあります。どんな助けでも大歓迎です。

EDIT:質問にビューをインスタンス化する方法:あなたがビューに追加しているローカル変数(filenameLabel)を使用しているあなたのdocumentIconWithFrame:...方法で

+ (DocumentIconView *)documentIconWithFrame:(CGRect)viewFrame 
        previewImage:(UIImage *)previewImage 
          title:(NSString *)title 
{ 
    DocumentIconView *view = [[DocumentIconView alloc] initWithFrame:viewFrame]; 

    // Close handle's size is assigned here 
    CGSize closeHandleSize = CGSizeMake(27, 27); 

    // The document preview image's frame is calculated by shrinking it by the close handle's size 
    CGRect documentPreviewFrame = CGRectMake(closeHandleSize.width/2, 
              closeHandleSize.height/2, 
              viewFrame.size.width - closeHandleSize.width, 
              viewFrame.size.height - closeHandleSize.height - 20); // 20 points is the filenameLabel's height 

    UIImageView *documentPreviewView = [[UIImageView alloc] initWithFrame:documentPreviewFrame]; 
    documentPreviewView.contentMode = UIViewContentModeScaleAspectFit; 
    documentPreviewView.backgroundColor = [UIColor clearColor]; 
    documentPreviewView.image = previewImage; 

    [view addSubview:documentPreviewView]; 

    CGRect closeHandleFrame = CGRectMake(0, 0, closeHandleSize.width, closeHandleSize.height); 
    CloseHandle *closeHandleView = [[CloseHandle alloc] initWithFrame:closeHandleFrame]; 

    closeHandleView.alpha = 0.0; 
    closeHandleView.tag = kCloseHandleTag; 
    [view addSubview:closeHandleView]; 

    CGRect filenameFrame = CGRectMake(0, 
             viewFrame.size.height - 20, 
             viewFrame.size.width, 
             20); 
    UILabel *filenameLabel = [[UILabel alloc] initWithFrame:filenameFrame]; 
    filenameLabel.backgroundColor = [UIColor clearColor]; 
    filenameLabel.text = title; 
    filenameLabel.font = [UIFont boldSystemFontOfSize:17]; 
    filenameLabel.textColor = [UIColor whiteColor]; 
    filenameLabel.textAlignment = UITextAlignmentCenter; 
    [view addSubview:filenameLabel]; 

    view.tag = kDocumentIconTag; 

    return view; 
} 
+0

[iconView.filenameLabel setBackgroundColor:[UIColor darkGrayColor]]; –

+0

ありがとうございますが、問題は_that_メソッドではありません。いずれのプロパティにもアクセス/変更することはできません。 – antalkerekes

+0

@property(非構造、保持)UIImageView * documentIconView;すべてを保持するように変更 –

答えて

2

。つまり、インスタンス変数がインスタンス化されることはなく、常にnilです。

ただ、この変更:他のインスタンス変数のため

filenameLabel = [[UILabel alloc] initWithFrame:filenameFrame]; 

と同じ:これに

UILabel *filenameLabel = [[UILabel alloc] initWithFrame:filenameFrame]; 

を。

+0

うわー。私は完全にそれを見落とした..あなたは正しい、それは問題です。 – antalkerekes

関連する問題