Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UITableViewCell上的UILabel显示不正确_Ios_Objective C_Interface Builder - Fatal编程技术网

Ios UITableViewCell上的UILabel显示不正确

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

我在interface builder中使用约束配置了一个界面。它的设置如下所示:

渲染单元时,右侧标签不会出现(但保留一个空间):

所涉及的单元格是自定义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
如果在函数末尾设置断点并执行
po[[cell detailtextlab]text]
,则文本设置正确。标签没有隐藏

我完全不知道可能的原因。是什么触发了这种行为

我尝试过的其他事情:

  • 将属性重命名为detailTextLabel以外的内容(在可能发生冲突的情况下)不起作用
  • 如果我添加第三个标签,带有默认文本,则正确显示
  • 如果添加第三个标签并将IB中的插座连接到未显示的插座,则问题标签的默认文本将显示,但第三个标签将隐藏
编辑:


如果我记录有关帧的最终位置,它位于
{{0,44},{0,0}

您可以尝试了解发生了什么:

  • 在标签上加上红色背景

  • 对标签的框架和单元格的contentView框架执行
    NSLog

  • 在上面放一个硬编码文本<代码>cell.detailTextLabel.text=@“嗨”


问题可能是故事板自动布局的约束。请检查标签约束,使其在tableview中调整单元格大小时可见。

约束显示在第一个链接中,我看可以。你看到它们有什么问题吗?你能把所有元素的背景颜色改成clearcolor,把详细的文本改成其他颜色,然后检查它是否显示在任何地方吗?结果是,它显示在所有位置的{0,44},{0,0}上,但是如果优先级为1000的约束将其锁定在最右边,这怎么可能呢,还有设置宽度的优先级1000约束?我建议禁用自动布局红色背景不会显示。不幸的是,在创建方法中没有记录帧的实际点,因为它仍然是未定义的/0,0(对于所有视图),因为约束尚未应用。我已经尝试了硬编码文本,但没有效果:/add一个
-(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;
}