2011-06-29 20 views
0

UILabelオブジェクトのプロパティを設定できません。UILabelプロパティを設定できません。

次のコードは、- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath方法である:

UILabel *label = (UILabel *)[cell viewWithTag:0]; 
label.text = [self.comments objectAtIndex:indexPath.row*2]; 
label.textColor = [UIColor cyanColor]; 
label.adjustsFontSizeToFitWidth = YES; 

私が得るすべては、4行目のランタイムエラーです(不思議なことに、前の行はOKです):

2011-06-29 11:23:57.641 Esker Monitor[94138:207] -[UITableViewCell setAdjustsFontSizeToFitWidth:]: unrecognized selector sent to instance 0x4e889e0 
2011-06-29 11:23:57.642 Esker Monitor[94138:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITableViewCell setAdjustsFontSizeToFitWidth:]: unrecognized selector sent to instance 0x4e889e0' 

似ラベルlabel.numberOfLines = 1;label.minimumFontSize = 7.0;のようなプロパティの変更もプログラムをクラッシュさせます。

私はここで分かりにくいものがありますか?

+1

'viewWithTag:'は 'UITableViewCell'オブジェクトを返すようです。 'text'と' textColor'も 'UITableViewCell'の(deprecated)プロパティであるため、前の行はOKです。 – albertamg

+0

私は[Appleのチュートリアル](http://goo.gl/qQhuY)に続きました。彼らはその問題について話しません。 'viewWithTag:'によって返されたUIViewからUILabelを取得する方法はありますか? –

+2

すべてのビューにはデフォルトとして0タグがありますので、別の値を使用することができます。 – albertamg

答えて

6

あなたは、セルのtextLabelプロパティを使用し、標準のUITableViewCellに組み込まれているラベルにアクセスする場合:

UILabel *label = cell.textLabel; 
... 

カスタムラベルをセルに追加する場合は、私のようにそれのためにいくつかの非ゼロのタグを使用してお勧めしたいです0はデフォルトのタグ値なので、

[cell viewWithTag:0]; 

は0タグ付きのサブビューを返すことができます。そのため、ラベルにゼロ以外のタグをいくつか割り当て、セルに直接追加するのではなく、セルのcontentViewに追加します。これは、セルが編集状態になったときにレイアウトの問題を避けるのに役立ちます。後で、そのラベルに次のようにアクセスすることができます。そのテキストとの、textColor方法がまだ動作

UILabel *label = (UILabel*)[cell.contentView viewWithTag:kSomeNonZeroTag]; 

理由は、UITableViewCellのは、実際に方法は(彼らは、細胞が公にそのラベルを公開していなかったときの時間から発信され、廃止されましたことを実装していることですSDK 3.0以降)

+0

ありがとう!確かに、0は特別です... –

0

labelにアクセスするためにcell.textLabelを使用する必要があります。これは、UITableViewCellの参照を持つ "label"自体のためにエラーが発生します。

1

ラベルを別のオブジェクトで作成しています(タグ0はラベルではなくセル用です)。 UILabelラベルのオブジェクトを確認してください。 UILabelタイプではありません。 UITableViewCell型が必要です。

なぜクラッシュするのですか?

2

実際に[cell viewWithTag:0]UITableViewCellを返します。それでは、あなたが道以下のようにそれを行うことができ、100、101、などのように、何か他のものに

-2

tagのUILabelを変更:

[cell.textLabel setFont:[UIFont fontWithName:@"Helvetica" size:14.0]]; 

[cell.textLabel setTextColor:[UIColor colorWithRed:222.0/255.0 green:221.0/255.0 blue:221.0/255.0 alpha:1.0]]; 

[cell.textLabel setBackgroundColor:[UIColor clearColor]]; 

あなたがこの方法のように任意のプロパティを調整することができます。

問題が発生した場合はお知らせください。

乾杯。

0

サブビューに適切なタグを付けてから、試してみてください。または、テーブルビューのセルのデフォルトラベルを設定する場合は、セルを使用する必要があります。あなたのTableViewCellクラスのヘッダーでtextLable

0

、あなたは@synthesize textLabel

を持っており、cellForRowAtIndexに、あなたはセルを作成することを確認して、TableViewCell実装クラスでは

@property (nonatomic, retain) UILabel *textLabel;

を作成する必要がありますそのTableViewCellクラスから取得します。そして、あなたはこの機能を

MyCustomizedCell *cell = (MyCustomizedCell *)[tableView dequeueReusableCellWithIdentifier:(NSString *) myIndent];

を、細胞を得ることができるというように、あなたは

cell.textLabel.adjustsFontSizeToFitWidth = YES;

または

[cell.textLabel setAdjustsFontSizeToFitWidth:YES];

限り簡単にそのTableViewCell内のすべてのオブジェクトを使用することができます
関連する問題