2013-10-30 7 views
8

私は自分のテーブルビューのセルに字幕を追加しようとしていますが、表示されません。 間違いはどこですか?IOS7のTableviewサブタイトル

行は[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle] ですが、iOS 7でも最新ですか?

敬具

フランク


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 

    if (!cell) 
    { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; 
    } 

    cell.textLabel.text = @"TestA"; 
    cell.detailTextLabel.text = @"TestB"; 

    return cell; 
} 
+0

であなたのセルクラスを登録することで

- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier;

を上書き私。 Storyboard/Xibファイルを使用しましたか?そこにセルプロトタイプを配置してください。 –

+0

このコードではメインタイトルが表示されますが、各行のサブタイトルは表示されません。これはすべてコード内にあるのですか、プロトタイプのセルを使用していますか? – rmaddy

答えて

5

このコード:dequeueReusableCellWithIdentifier: forIndexPath:は新しいセルを割り当てることが保証されているため、

if (!cell) 
{ 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; 
} 

が実行されることはありません。

残念ながら、registerClass:forCellReuseIdentifier:UITableViewCellStyleを指定できません。

dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPathを単にdequeueReusableCellWithIdentifier:CellIdentifierに変更してください。このメソッドは、セルが返されることを保証するものではありません。*そうでない場合、コードは必要なスタイルで新しいセルを作成します。


* - (rdelmarが指摘するように、それはあなたは、ストーリーボードを使用している場合は、それはここではそうではないのです。)私は同様の問題を抱えていたし、インターネット上で何の解決策は、のために働いていない

+1

"このメソッドは、セルが返されることを保証しません" - 必ずしも真ではありません。ストーリーボードでセルが作成された場合、そのメソッドはセルを返すことも保証されます。 – rdelmar

+0

tableViewでクラスまたはペン先を登録した場合、自動的にそのインスタンスが返され、セルは決してゼロになりません。 – estobbart

0

私。私は馬鹿だったことが分かります。他の誰かが同様のシナリオを経験したときに私のソリューションを投稿します。

私はあなたがprotoptypeセルを選択し、選択を確認して、プロトタイプを作成している、あなたはストーリーボードを使用していると仮定してドキュメントアウトラインサブタイトルにストーリーボードで

をスタイルを設定しています副題画像を参照してください:

enter image description here


今すぐラベルのフォントの色は、あなたの背景に、私たちが目に見える性質のものであることを確認してください!

0

だけのUITableViewCellのサブクラスを作成し、最初の行は

[super initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:reuseIdentifier]; 

そして正しいに見えるテーブルビュー

[tableView registerClass:[YourCellSubclass class] forCellReuseIdentifier:@"YourCellID"];
1
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath  *)indexPath { 
UITableViewCell *cell = nil; 
cell = [tableView dequeueReusableCellWithIdentifier:@"cell"]; 
if (cell == nil) 
{ 
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"]; 
} 
cell.textLabel.text = @"Title1"; 

cell.detailTextLabel.text = @"Subtitle 1"; 

return cell; 
} 
+0

回答には、ソリューションの説明が含まれている必要があります。 – Enkode

+0

Inspectorビューからセルに識別子を与え、** cellForRowAtIndexPath **にこのコードを書き込みます。ここで、** cel.detailTextLabel.text **はサブタイトルです。 – Jamil

関連する問題