2016-03-23 12 views
2

私は検索しており、この問題の解決策を見つけることができません。現在のコードはReload section without reloading section headerに基づいています。autolayoutでセルを展開すると、UITableViewがジャンプします。

私はユーザーがセルを押したときにuitableviewセルを大きくしようとしています。私は最初に2行のテキストに制限されているUILabelを持つUITableViewCellサブクラスを持っています。ユーザーがUILabelを押すと、UILabelのnumberOfLinesプロパティが0に設定され、必要な数の行に展開されます。ここで

はのtableViewから私のコードです:didSelectRowAtIndexPath:

if (((NSNumber *)expandedCells[indexPath.section]).boolValue) 
{ 
    labelExpandingCell.cellLabel.numberOfLines = 10; 
} else 
{ 
    labelExpandingCell.cellLabel.numberOfLines = 3; 
} 
[UIView setAnimationsEnabled:NO]; 
[self.tableView beginUpdates]; 
[self.tableView setNeedsDisplay]; 
[self.tableView endUpdates]; 
[UIView setAnimationsEnabled:YES]; 

は時々これは私が実行したときのUITableViewのcontentOffset.yの== 0は通常テーブルビューが後方100個のピクセルまたはそうにジャンプ、通常時に、正常に動作しますこのコード。このコードが実行される前後のログの例を次に示します。

2016年3月25日14:57:08.549 TableViewTest [485:129926]更新前のオフセット内容:153.500000 2016年3月25日14:57:08.568 TableViewTest [485:129926]更新後のオフセット内容:136.500000

現在表示されているセルを拡大すると、オートレイアウトによってテーブルビューが後方にジャンプするのはなぜですか?

+0

私は以前働いていたコードと似たものを手に入れています。これがいつ始まったのか分かりません。おそらくiOS 9 SDKですか?セルの高さを手動で設定することに戻ってはいけません! –

答えて

3

テーブルビューのデリゲートにestimatedHeightForRowAtIndexPathメソッドを実装することでこの問題を解決しました。私はこの問題は、この方法を実装していないので、私のテーブルビューの前のセクションの高さを正しく見積もっていないと考えていました。

+0

はい固定の高さを追加してestimatedHeightを削除して解決しました。:) –

0

がはいている場合、あなたがのUITableView

tableView.rowHeight = UITableViewAutomaticDimension tableView.estimatedRowHeight = DEFAULT_ROW_HEIGHT

が設定されているチェックあなたのUILabelの制約が正しくセルに適用されていることを保証します。 上記の2つのプロパティを設定すると、 "estimatedHeightForRowAtIndexPath"メソッドの実装を避けることができます。

+0

それは私の仕事ではありません! – Archerlly

関連する問題