2012-11-29 55 views
0

我想知道這是可能的:如何僅使用IB(無代碼)來包裝UITableViewCell中的文本?

觀看從後含有多種意見表時
  • ,每個評論可能有不同的長度 - 這樣的表格單元格應該調整垂直,以容納更多的文本。

請注意我正在尋找一個不同的解決方案,而不是發佈here和SO其他地方,因爲我想實現這個結果,而不必將代碼添加到我的控制器。

使用IB,我細胞用途:

  • 風格:字幕
  • 模式:規模,以適應
  • 行高度:默認

「稱號「標籤(這是o應擴大NE):

  • 換行符:自動換行
  • 線:0

通過上述,我居然能看到文本的多行,但是行不會進行調整相應地 - 所以來自幾行的文本被重疊。

是否可以垂直調整行的大小而不將其編碼到我的控制器中?

CommentViewController.m

#import "CommentViewController.h" 

@implementation CommentViewController 
@synthesize  commentsArray; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
} 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return commentsArray.count; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"commentCell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 

    NSDictionary *comment  = [commentsArray objectAtIndex:indexPath.row]; 
    NSString  *commentText = [comment objectForKey:@"comment_text"]; 
    NSString  *commentAuthor = [comment objectForKey:@"comment_author_name"]; 

    cell.textLabel.text  = commentText; 
    cell.detailTextLabel.text = [NSString stringWithFormat:@"by %@", commentAuthor]; 

    return cell; 
} 

@end 
+1

我99%肯定(我可能永遠是錯的當然),只有使用Interface Builder才能實現 - 特別是如果標籤的高度不同。你試圖避免使用代碼有什麼特別的原因嗎? –

+0

只是爲了簡單起見...因爲我無法從鏈接的答案中實現代碼,我提到...我試圖將該代碼與上面的控制器合併,我認爲我搞砸了大時間 – pepe

+0

究竟是什麼問題?我們可以幫助解決它。 –

回答

0

以下是我對合並的代碼從SO回答我與我的代碼中提到:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"commentCell"; 

    NSDictionary *comment  = [commentsArray objectAtIndex:indexPath.row]; 
    NSString  *commentText = [comment objectForKey:@"comment_text"]; 
    NSString  *commentAuthor = [comment objectForKey:@"comment_author_name"]; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) 
    { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
     cell.textLabel.lineBreakMode = NSLineBreakByWordWrapping; 
     cell.textLabel.numberOfLines = 0; 
     cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:14.0]; 
    } 

    cell.textLabel.text  = commentText; 
    cell.detailTextLabel.text = [NSString stringWithFormat:@"by %@", commentAuthor]; 

    return cell; 
} 

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSDictionary *comment  = [commentsArray objectAtIndex:indexPath.row]; 
    NSString  *commentText = [comment objectForKey:@"comment_text"]; 

    UIFont *cellFont  = [UIFont fontWithName:@"Helvetica" size:14.0]; 
    CGSize constraintSize = CGSizeMake(280.0f, MAXFLOAT); 
    CGSize labelSize  = [commentText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:NSLineBreakByWordWrapping]; 

    return labelSize.height + 40; 
} 

@end 
相關問題