Interface Builder を介して tableView にいくつかの tableViewCells を追加しました。そのうちの 1 つに UITextView が含まれています。
ボタンがクリックされると、tableView がリロードされます。
- (void)updateViewWithMessage:(NSString *)message
{
self.someMessage = message;
[self.tableView reloadData];
}
私の cellForRowAtIndexPath メソッドで、このセルをチェックし、次のことを行います。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
CellIdentifier = kMyCustomCell;
MyCustomCell *contentCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
CGRect textViewFrame = contentCell.contentTextView.frame;
textViewFrame.size.height = [self heightForContentView];
NSLog(@"%f, %f, %f, %f\n", textViewFrame.origin.x,
textViewFrame.origin.y,
textViewFrame.size.width,
textViewFrame.size.height);
contentCell.contentTextView.frame = textViewFrame;
contentCell.contentTextView.text = self.someMessage;
return contentCell;
}
heightForContentView() で高さを計算します。
- (CGFloat)heightForContentView
{
CGSize boundingRectSize = CGSizeMake(kCustomCellWidth - 20, CGFLOAT_MAX);
CGRect textViewRect = [self.someMessage boundingRectWithSize:boundingRectSize
options:NSStringDrawingUsesLineFragmentOrigin
attributes:nil
context:nil];
return textViewRect.size.height + 20;
}
行の高さを何かに設定すると、セルのサイズが適切に変更されます。しかし、その中の textView はそうではありません。ボタンを 2 回クリックすると (updateViewWithMessage: メソッドが再度呼び出されます)、サイズが変更されます。これは奇妙です!
ところで: NSLog は正しいサイズを出力するので、それらは間違いなく設定されていますが、なぜこの TextView のサイズが変更されないのでしょうか?
誰かがこの問題をすぐに解決するのを手伝ってくれませんか?