セル ビューで自動レイアウトを有効にしていますか? テーブル ビューが表示されていないときに (たとえば、詳細ビュー コントローラーがプッシュされたとき)、テーブル ビューをリロードしていますか? これは既知のバグのようです。この質問/回答を参照してください。Apple バグレポート: rdar://15175803
基本的に、完全ではありませんが満足のいく結果が得られる多層ソリューションがあります。まず、これは常に当てはまります。テーブル ビュー セルで制約を最適化します。制約を動的に変更する場合は、不必要なレイアウトや描画を引き起こしていないことを確認してください。次に、テーブル ビューが表示されていない場合は更新しないでください。これはハックのように感じますが、他に選択肢はありません (1 つあるのですが、自動レイアウトを無効にする必要があり、これはまったく最適ではないため、無視しましょう)。テーブルビューが非表示であることを示すtableView.window
プロパティがの場合、View Controller でテストできます。nil
非表示でない場合は通常どおり更新しますが、非表示の場合は更新しません。テーブルが更新されたことを示すフラグを設定するだけです。viewWillAppear:
オンコール_reloadData
テーブルを更新します。選択したインデックスパスのテーブル ビューをクエリし、データをリロードした後にそれらを再度選択することで、選択を保持できます。