Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.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
Iphone UITableViewCell中的UILabel在单元格位于屏幕顶部之前不会绘制_Iphone_Objective C_Ios_Ios5 - Fatal编程技术网

Iphone UITableViewCell中的UILabel在单元格位于屏幕顶部之前不会绘制

Iphone UITableViewCell中的UILabel在单元格位于屏幕顶部之前不会绘制,iphone,objective-c,ios,ios5,Iphone,Objective C,Ios,Ios5,我对UITableViewCell中的UILabel有奇怪的问题。直到我将屏幕向下拉,使UITableViewCell位于顶部,它才会出现。下面是这个问题的视频 下面是创建单元格时的代码 TVC_Location_View_Text *cell = (TVC_Location_View_Text *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) {

我对UITableViewCell中的UILabel有奇怪的问题。直到我将屏幕向下拉,使UITableViewCell位于顶部,它才会出现。下面是这个问题的视频

下面是创建单元格时的代码

    TVC_Location_View_Text *cell = (TVC_Location_View_Text *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {

        NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"TVC_Location_View_Text" owner:nil options: nil];

        for(id currentObject in topLevelObjects) {
            if([currentObject isKindOfClass:[UITableViewCell class]]) {
                cell = ((TVC_Location_View_Text *) currentObject);
                break;
            }

        }

    }

    UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:15.0];
    CGSize constraintSize = CGSizeMake(300.0f, MAXFLOAT);
    CGSize labelSize = [self.sLocationText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
    CGRect rect = CGRectMake(10, 10,  labelSize.width, labelSize.height);

    UILabel* labelText = [[UILabel alloc] initWithFrame:rect];
    [labelText setFont:cellFont];
    [labelText setLineBreakMode:UILineBreakModeWordWrap];
    [labelText setNumberOfLines:0];
    [labelText setBackgroundColor:[UIColor clearColor]];
    [labelText setTextColor:appDelegate.colorDarkText];

    [cell addSubview:labelText];

    [labelText setText:self.sLocationText];


    return cell;

UILabel的创建应该在单元格本身的创建过程中进行 这是一个问题,我不知道它是否能解决您的错误,但它仍然是一个错误, 请将您的代码更改为

TVC_Location_View_Text *cell = (TVC_Location_View_Text *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
UILabel* labelText;
if (cell == nil) {

    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"TVC_Location_View_Text" owner:nil options: nil];

    for(id currentObject in topLevelObjects) {
        if([currentObject isKindOfClass:[UITableViewCell class]]) {
            cell = ((TVC_Location_View_Text *) currentObject);
            break;
        }

    }

    labelText = [[UILabel alloc] initWithFrame:rect];
    [labelText setFont:cellFont];
    [labelText setLineBreakMode:UILineBreakModeWordWrap];
    [labelText setNumberOfLines:0];
    [labelText setBackgroundColor:[UIColor clearColor]];
    [labelText setTextColor:appDelegate.colorDarkText];
    labelText.tag = 111;
    [cell addSubview:labelText];
}

labelText = (UILabel*)[cell viewWithTag:111];

UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:15.0];
CGSize constraintSize = CGSizeMake(300.0f, MAXFLOAT);
CGSize labelSize = [self.sLocationText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
CGRect rect = CGRectMake(10, 10,  labelSize.width, labelSize.height);

[labelText setText:self.sLocationText];


return cell;

试试这段代码,看看它是否行得通

谢谢,但恐怕不行。同样的问题,虽然我同意我应该使用这个方法来设置实际的文本。谢谢,但是这没有任何区别。
You should use -[UITableViewDelegate willDisplayCell:forRowAtIndexPath:] delegate method.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
TVC_Location_View_Text *cell = (TVC_Location_View_Text *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
UILabel* labelText;
    if (cell == nil) 
    {

        NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"TVC_Location_View_Text" owner:nil options: nil];

        for(id currentObject in topLevelObjects)
        {
                if([currentObject isKindOfClass:[UITableViewCell class]])
            {
                  cell = ((TVC_Location_View_Text *) currentObject);
                   break;
                }

        }

     labelText = [[UILabel alloc] initWithFrame:rect];
     [labelText setFont:cellFont];
     [labelText setLineBreakMode:UILineBreakModeWordWrap];
     [labelText setNumberOfLines:0];
     [labelText setBackgroundColor:[UIColor clearColor]];
     [labelText setTextColor:appDelegate.colorDarkText];
     labelText.tag = 111;
     [cell addSubview:labelText];
    }
    return cell;
}

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    UILabel* labelText = (UILabel*)[cell viewWithTag:111];

    UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:15.0];
    CGSize constraintSize = CGSizeMake(300.0f, MAXFLOAT);
    CGSize labelSize = [self.sLocationText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
    CGRect rect = CGRectMake(10, 10,  labelSize.width, labelSize.height);

    [labelText setText:self.sLocationText];
}