Ios UITableViewCell上的UILabel显示不正确
我在interface builder中使用约束配置了一个界面。它的设置如下所示: 渲染单元时,右侧标签不会出现(但保留一个空间): 所涉及的单元格是自定义UITableViewCell子类:Ios UITableViewCell上的UILabel显示不正确,ios,objective-c,interface-builder,Ios,Objective C,Interface Builder,我在interface builder中使用约束配置了一个界面。它的设置如下所示: 渲染单元时,右侧标签不会出现(但保留一个空间): 所涉及的单元格是自定义UITableViewCell子类: #import <UIKit/UIKit.h> @interface ProgressCell : UITableViewCell @property (weak, nonatomic) IBOutlet UILabel *textLabel; @property (weak, nonat
#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
如果在函数末尾设置断点并执行po[[cell detailtextlab]text]
,则文本设置正确。标签没有隐藏
我完全不知道可能的原因。是什么触发了这种行为
我尝试过的其他事情:
- 将属性重命名为detailTextLabel以外的内容(在可能发生冲突的情况下)不起作用
- 如果我添加第三个标签,带有默认文本,则正确显示
- 如果添加第三个标签并将IB中的插座连接到未显示的插座,则问题标签的默认文本将显示,但第三个标签将隐藏
如果我记录有关帧的最终位置,它位于
{{0,44},{0,0}
您可以尝试了解发生了什么:
- 在标签上加上红色背景
- 对标签的框架和单元格的contentView框架执行
NSLog
- 在上面放一个硬编码文本<代码>cell.detailTextLabel.text=@“嗨”代码>
-(void)test:(UITableViewCell*)cell
方法并执行[自执行选择器:@selector(test:)with object:cell afterDelay:1.0];在您的
cellforrowatinex:`上,您可以在那里进行日志记录。关键是要知道单元格的位置,它是否在侧面,或者它是否在应该在的位置但不可见,或者其他什么。您也可以尝试使用自定义的UILabels
,而不是尝试重用现有的textlab
和detailtextlab
我尝试过使用不同的标签名称,但没有效果不过,日志记录是一个好主意;事实证明,UILabel是以{{0,44},{0,0}帧呈现的。考虑到它与右手边约束有固定的距离,我不明白为什么会发生这种情况。有什么想法吗?我不擅长自动布局
,但应用于它的约束可能会使它保持稳定的右侧边距,而对进度视图的约束会使它收缩。您可以尝试使用自动重设网格sks
对于这个简单的单元,它们更容易理解和使用。
- (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;
}