2016-06-21 5 views
0

Все работает хорошо в iOS 9.
Но в iOS 8 содержимое не отображается, отображается только изображение.Содержимое в ячейке таблицы iOS 8 не отображается

Что я сделал, так это то, что я создаю представление и добавляю ярлык и UIImage к этому виду. Тогда эта точка зрения добавляется contentView ячеек таблицы

создать View

- (UIView *)getHeaderView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{ 
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, HEADER_SECTION_HEIGHT)]; 
    [view setBackgroundColor:[[RNThemeManager sharedManager] colorWithHexString:[_themeComponent valueForKey:@"Layer1Color"]]]; 

    UILabel *taskName = [[UILabel alloc] initWithFrame:CGRectMake(5.0, SECTION_BREAK+3.0, view.frame.size.width-23.0, 20)]; 
    [taskName setFont:[UIFont boldSystemFontOfSize:[[_themeComponent valueForKey:@"RegularFontSize"] intValue]]]; 
    [taskName setText:combinedTask.taskDescription]; 
    [taskName setTextColor: [[RNThemeManager sharedManager] colorWithHexString:[_themeComponent valueForKey:@"textPrimary"]]]; 
    [view addSubview:taskName]; 

UIImageView *addressView = [[UIImageView alloc]initWithFrame:CGRectMake(5.0, SECTION_BREAK+28.0, 20, 20)]; 
    addressView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@.png", @"Attr_Pin"]]; 
    [view addSubview:addressView]; 

    UILabel *address = [[UILabel alloc] initWithFrame:CGRectMake(35.0, SECTION_BREAK+23.0, view.frame.size.width-35.0, 30)]; 
    [address setFont:[UIFont boldSystemFontOfSize:[[_themeComponent valueForKey:@"SmallFontSize"] intValue]]]; 
    address.lineBreakMode = NSLineBreakByWordWrapping; 
    address.numberOfLines = 0; 

    [address setText:[NSString stringWithFormat:@"%@", unit]]; 
    [address setTextColor: [[RNThemeManager sharedManager] colorWithHexString:[_themeComponent valueForKey:@"textPrimary"]]]; 
    [view addSubview:address]; 
    return view; 
} 

Добавить вид в ячейку таблицы

UIView *header= [self getHeaderView:tableView viewForHeaderInSection:section]; 
cell.taskIdLabel.hidden = YES; 

[cell.contentView addSubview:header]; 

Каждый имеет какие-либо идеи? Большое спасибо за помощь.

ответ

0

Это потому, что iOS 9 Apple отлично справляется с автоотделением, чем раньше. Перед добавлением ячейки возврата добавьте [ячейка layoutIfNeeded]. Обновление У меня такая же проблема и раньше. Вот блок кода, который я использую для решения моей проблемы.

- (void) sizeHeaderToFit { 

    //call in viewLayoutSubView 
    UIView *myHeaderView = self.tableView.tableHeaderView; 

    [myHeaderView setNeedsLayout]; 
    [myHeaderView layoutIfNeeded]; 
    CGFloat height = [myHeaderView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height; 

    myHeaderView.frame = ({ 
     CGRect headerFrame = myHeaderView.frame; 
     headerFrame.size.height = height; 
     headerFrame; 
    }); 

    self.tableView.tableHeaderView = myHeaderView; 
} 

назовите его в поле зренияDidLayoutSubView. Надеюсь, это поможет bạn :))

+0

Я попробовал [cell.contentView setNeedsDisplay]; [cell.contentView layoutIfNeeded]; а также [cell setNeedsDisplay]; [ячейка layoutIfNeeded]; вчера, но не повезло. – ndnguyen

+0

Странно, что здесь отображается uiimage, а другие - нет. – ndnguyen