2015-01-14 2 views
0

У меня есть UITableView с прототипом, в котором есть две метки внутри. Есть 16 жестко закодированных текстовых строк различного размера в 16 ячейках (для них нужно обернуть). Когда вид нагрузки первоначально, я вижу второй ярлык в каждой ячейке не обернута:Ярлыки в ячейках UITableView не завернуты до начала прокрутки

enter image description here

Когда я прокручиваю вниз, текст оборачивают правильно:

enter image description here

Когда я прокручиваю назад, ячейки обернуты правильно. Я могу опубликовать больше информации (например, код), но я надеюсь, что решение очевидно для кого-то, и это не обязательно.

Это в прошивке 8.

** Обновление - Вот код! **

// TestViewController.h 
#import <UIKit/UIKit.h> 

@interface TestViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> 

@end 

// TestViewController.m 
#import <Foundation/Foundation.h> 
#import "TestViewController.h" 
#import "MessageCell.h" 

@interface TestViewController() 

@property (nonatomic, strong) NSArray *titles; 
@property (nonatomic, strong) NSArray *messages; 

@property IBOutlet UITableView *tableView; 

@end 

@implementation TestViewController 

-(void) viewDidLoad { 
    [super viewDidLoad]; 

    self.automaticallyAdjustsScrollViewInsets = NO; 
    self.tableView.estimatedRowHeight = 66.0; 

    self.tableView.rowHeight = UITableViewAutomaticDimension; 

    self.titles = @[ 
        @"One", 
        @"Two Two", 
        @"Three Three Three", 
        @"Four Four Four Four", 
        @"Five Five Five Five Five", 
        @"Six Six Six Six Six Six", 
        @"Seven Seven Seven Seven Seven Seven Seven", 
        @"Eight Eight Eight Eight Eight Eight Eight Eight", 
        @"Nine", 
        @"Ten", 
        @"Eleven", 
        @"Twelve", 
        @"Thirteen", 
        @"Fourteen", 
        @"Fifteen", 
        @"Sixteen", 
        ]; 
    self.messages = @[ 
         @"This is a short message.", 
         @"This is a long message. It's longer than the medium sized message so we can see how it looks with the wrapping and dynamic sized cells.", 
         @"This is a medium sized message. It's not going to be very long.", 
         @"This is a long message. It's longer than the medium sized message so we can see how it looks with the wrapping and dynamic sized cells.", 
         @"This is a short message.", 
         @"This is a long message. It's longer than the medium sized message so we can see how it looks with the wrapping and dynamic sized cells.", 
         @"This is a medium sized message. It's not going to be very long.", 
         @"This is a long message. It's longer than the medium sized message so we can see how it looks with the wrapping and dynamic sized cells.", 
         @"This is a short message.", 
         @"This is a long message. It's longer than the medium sized message so we can see how it looks with the wrapping and dynamic sized cells.", 
         @"This is a medium sized message. It's not going to be very long.", 
         @"This is a long message. It's longer than the medium sized message so we can see how it looks with the wrapping and dynamic sized cells.", 
         @"This is a short message.", 
         @"This is a long message. It's longer than the medium sized message so we can see how it looks with the wrapping and dynamic sized cells.", 
         @"This is a medium sized message. It's not going to be very long.", 
         @"This is a short message.", 
         ]; 

} 

- (void)viewWillAppear:(BOOL)animated 
{ 
    [[self navigationController] setNavigationBarHidden:NO animated:NO]; 
} 

- (NSInteger)tableView:(UITableView *)tableView 
numberOfRowsInSection:(NSInteger)section 
{ 
    NSLog(@"in number of rows. returning: %ul", [self.messages count]); 
    return [self.messages count]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView 
     cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSLog(@"in cell for row: %ld", (long)indexPath.row); 

    NSString *cellIdentifier = @"MessageCell"; 
    MessageCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 

    if (cell == nil) { 
     cell = [[MessageCell alloc] initWithStyle:UITableViewCellStyleDefault 
             reuseIdentifier:cellIdentifier]; 
    } 

    cell.title.text = [self.titles objectAtIndex:indexPath.row]; 
    cell.message.text = [self.messages objectAtIndex:indexPath.row]; 


    return cell; 
} 

@end 
+0

Ничего не видно. Отправьте свой код источника данных UITableview. – Lefteris

+0

Я исправил проблемы, подобные этому, вызвав [self layoutIfNeeded] в переопределении didMoveToSuperview (в пользовательском классе ячейки). – rdelmar

ответ

1

Я нашел аналогичный вопрос here.

Решение состоит в том, чтобы убедиться, что я вызываю [cell.contentView layoutIfNeeded]; в cellForRowAtIndexPath в контроллере таблицы.

0

Я также нашел, что layoutIfNeeded был ответом, но я думаю, что его нужно только один раз называть при создании ячейки. В моем случае в awakeFromNib, но где-то еще может быть уместно, если вы не используете Interface Builder.

Смежные вопросы