UITableView
アプリケーションの設定ビューに静的セルを使用しています。
このテーブルのセクションの1つには2つのセルが含まれ、2番目のセルUISwitch
は最初のセルに含まれるセルがオンになっている場合にのみ表示されます。
したがって、UISwitch
のターゲットは次のとおりです。
- (void)notificationSwitchChanged:(id)sender
{
UISwitch* switch = (UISwitch*)sender;
self.bNotify = switch.on;
[self.settingsTable reloadSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationTop];
}
私はこのように実装numberOfRowsInSection:
しました:
(NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section
{
if (section != 1)
return [super tableView:tableView numberOfRowsInSection:section];
if (self.bNotify)
return 2;
return 1;
}
これは「機能」しますが、アニメーションに欠陥があり、最初のセルが消えるか、前のセクションの途中で上にスライドするか、選択したアニメーションの種類に応じてさまざまなものが表示されます。最もきれいですUITableViewRowAnimationNone
が、それでも完璧ではありません。
セクションをスクロールして表示しないように戻すと、再び正常に見えます。
編集:問題のスクリーンショットをいくつか撮りました:
前後に追加beginUpdates
してみましたが、何も変わりませんでした。作品の代わりに使用していますが、アニメーションはまったくありません。endUpdates
reloadSections
reloadData
reloadSections
テーブルのセルが静的であるためですか、それとも何かが足りないためですか?