のプロパティにアクセスすることはできませんそのプロパティのいくつかに別のクラスからアクセスします。は、私はいくつかのカスタム描画を行うには、次のサブクラスを作成しているサブクラス
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;
}
[iconView.filenameLabel setBackgroundColor:[UIColor darkGrayColor]]; –
ありがとうございますが、問題は_that_メソッドではありません。いずれのプロパティにもアクセス/変更することはできません。 – antalkerekes
@property(非構造、保持)UIImageView * documentIconView;すべてを保持するように変更 –