子ビューが削除された後、 UITableViewControllerが更新されたセルを再描画できないという問題があります。
これが何が起こっているかです。子ビューのデータを変更した後、親ビュー コントローラーはソース データ配列をリロードし、PostNotification を介して[tableView reloadData]を実行します。これがトリガーされた後、popViewControllerAnimatedを使用して親 UITableViewController に戻ります (これにより、スタックから子ビューがポップされ、コントローラーが 1 レベル上に表示されます)。
ただし、更新されたデータが親ビュー コントローラーに表示されません。デバッガーによると、セルのラベルは更新されていますが、表示されるラベルは変更されていません。ただし、テーブルをスクロールしてフリックすると、更新されたセルが一時的に表示されなくなり、再び表示されるとラベルが更新されます!
また、 viewWillAppear経由で[tableView reloadData]を呼び出してみましたが、問題は解決しません。
役立つ可能性のある追加情報を次に示します。次のような構造の 3 つのビューがあります。
1/ SettingsViewController : UITableViewController
2/ -- UserView : UITableViewController
3/ ---- UserDetailsView : UIViewController <UIActionSheetDelegate>
次のように UserView 内から UserDetailsView を呼び出しています。
UserDetailsView *userDetailsView = [[UserDetailsView alloc] init];
[self.navigationController pushViewController:userDetailsView animated:YES];
最上位のコントローラー (SettingsViewController) に戻り、問題のあるコントローラー (UserView) をロードすると、すべてが正しく描画されます。この問題が発生するのは、子ビューから戻ったときだけです。
ご提案いただきありがとうございます。