0

テーブルビューセルのサイズを変更して、すべてのメッセージを表示する方法を知りたいです。アプリがサーバー上のxmlからメッセージを取得していると表示されますが、メッセージがテキストフィールドより長い場合は表示されます。ここに3つのドットが私のコードです:

 - (NSInteger)tableView:(UITableView *)myTableView numberOfRowsInSection:(NSInteger)section {
return ( messages == nil ) ? 0 : [messages count];
}


- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return 37;
}

- (UITableViewCell *)tableView:(UITableView *)myTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

UITableViewCell *cell = (UITableViewCell *)[self.messageList dequeueReusableCellWithIdentifier:@"ChatListItem"];
if (cell == nil) {
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ChatListItem" owner:self options:nil];
    cell = (UITableViewCell *)[nib objectAtIndex:0];
}

NSDictionary *itemAtIndex = (NSDictionary *)[messages objectAtIndex:indexPath.row];
UILabel *textLabel = (UILabel *)[cell viewWithTag:1];
textLabel.text = [itemAtIndex objectForKey:@"text"];
UILabel *stextLabel = (UILabel *)[cell viewWithTag:3];
stextLabel.text = [itemAtIndex objectForKey:@"text"];

UILabel *userLabel = (UILabel *)[cell viewWithTag:2];
userLabel.text = [itemAtIndex objectForKey:@"user"];
UILabel *suserLabel = (UILabel *)[cell viewWithTag:4];
suserLabel.text = [itemAtIndex objectForKey:@"user"];

if ([usernameText.text isEqualToString:userLabel.text]){
    UIImageView* img = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"chat1@2x.png"]];
    [cell setBackgroundView:img];
    [img release];

    textLabel.hidden=NO;
    stextLabel.hidden=YES;

    userLabel.hidden=NO;
    suserLabel.hidden = YES;


}
else{
    UIImageView* img = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"chat2@2x.png"]];
    [cell setBackgroundView:img];
    [img release];

    textLabel.hidden=YES;
    stextLabel.hidden=NO;

    userLabel.hidden=YES;
    suserLabel.hidden = NO;
}

return cell;

}

ありがとう

4

1 に答える 1

1

このロジックのように heightForRowAtIndexPath を渡す必要があります (コードの準備ができていません)。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
NSDictionary *itemAtIndex = (NSDictionary *)[messages objectAtIndex:indexPath.row];
NSString *text = [itemAtIndex objectForKey:@"text"];
if(text is larger then what ever you want) {
    return yourSpecificCellHeight;
}
return 37;

}

テキストのサイズを計算するには、stackOverflow に関するこの投稿を参照してください

于 2012-11-15T07:21:11.487 に答える