インターフェイスビルダーで制約を使用して構成されたインターフェイスがあります。次のように設定されています: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}}
。