2

インターフェイスビルダーで制約を使用して構成されたインターフェイスがあります。次のように設定されています:http://imgur.com/a/xqa7D

セルがレンダリングされると、右側のラベルは表示されません(ただし、そのためのスペースは残ります):http: //imgur.com/xwBSSMD

問題のセルは、カスタムUITableViewCellサブクラスです。

#import <UIKit/UIKit.h>

@interface ProgressCell : UITableViewCell

@property (weak, nonatomic) IBOutlet UILabel *textLabel;
@property (weak, nonatomic) IBOutlet UIProgressView *progressView;
@property (weak, nonatomic) IBOutlet UILabel *detailTextLabel;

@end

クラスにはこれ以上のロジックはありません。

テーブルビューセルは、ストーリーボードに設定した識別子からインスタンス化されます。

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

    Object *room = [self.rooms objectAtIndex:indexPath.row];
    cell.textLabel.text = room.name;
    cell.progressView.progress = 1.0f - ((float)room.avail)/room.total;
    cell.detailTextLabel.text = [NSString stringWithFormat:@"%d/%d", room.avail, room.total];

    return cell;
}

関数の最後にブレークポイントを設定して実行するpo [[cell detailTextLabel] text]と、テキストは正しく設定されます。ラベルは非表示ではありません。

私は考えられる原因について完全に途方に暮れています。何がこの行動を引き起こしているのでしょうか?

私が試した他のこと:

  • プロパティの名前をdetailTextLabel以外に変更すると(衝突の可能性がある場合)、機能しません
  • 正しく表示されるデフォルトのテキストで3番目のラベルを追加すると
  • 3番目のラベルを追加し、IBのそのコンセントを表示されていないコンセントに接続すると、問題のあるラベルのデフォルトのテキストは表示されますが、3番目のラベルは非表示になります

編集:

問題のフレームの最終的な位置をログに記録すると、になります{{0, 44}, {0, 0}}

4

2 に答える 2

0

何が起こっているのかを知るために試すことができること:

  • ラベルに赤い背景を付けます。

  • NSLogラベルのフレームとセルの contentView フレームを使用して実行します。

  • その上にハードコードされたテキストを置きます。cell.detailTextLabel.text = @"Hi";

于 2013-02-07T12:20:43.617 に答える
0

問題は、ストーリーボードの自動レイアウトの制約である可能性があります。テーブルビューでセルのサイズが変更されたときに表示されるように、ラベルの制約を確認してください

于 2013-02-07T12:23:36.487 に答える