1

iOS 6.1に基本的な(UITableViewCellStyleDefault)UITableViewCellsを備えたプレーンな(UITableViewStylePlain)UITableViewがあります。編集モードに入ると、セルは希望どおりにインデントされます。ただし、すべてのセルラベルが短い場合に限ります。1つが右側でクリップされるのに十分な長さである場合、テーブルセルはそれ以上インデントされません。

例えば:

  1. 1つのセルを持つテーブル:(SHORT)=>インデントすなわち動作
  2. 2つのセルを持つテーブル:(LONG)(SHORT)=>どちらのセルインデントも機能しない

この状況を改善できる簡単な手順は何ですか?たとえば、Xcodeの基本的な非カスタムテーブルビューセルのプリセットサイズプロパティを変更できないように見えます。

更新:問題をさらに説明する2つの画像があります(1番目:正しいケース、2番目:間違ったケース):

ここに画像の説明を入力してください ここに画像の説明を入力してください

更新:根本的な原因はラベルの長さではないことが判明しました。代わりに、それは私の非同期についてのようです。このテーブルビューに関連するKVOの処理。tableView:cellForRowAtIndexPath:セルの基になるマネージド(コアデータ)オブジェクトでゲッターを呼び出します。管理対象オブジェクトのデフォルトのゲッターは、おそらく障害のあるオブジェクトが認識されたときに、独自のセッターを呼び出すようです。私のKVOの設定方法が原因で、これはの別の呼び出しにつながりますtableView:cellForRowAtIndexPath:。たまたま、2番目のケースのみがKVO通知を含み、その後の再帰呼び出しが問題を引き起こす可能性があります(いずれの場合も少し奇妙に思えます)...

4

1 に答える 1

0

これは、テーブルビューのデータソースのコンストラクターで基になる管理対象オブジェクトを「プリフェッチ」することで解決できました。これを行うには、テーブルセルに表示されているプロパティにアクセスします。このようにして、最初のKVO通知は、の不要な再帰呼び出しにつながることができないコンテキストでトリガーされますtableView:cellForRowAtIndexPath:

状況を処理するためのより良い(よりエレガントな)方法があれば、私はまだそれについて学ぶことに興味があります。

于 2013-03-07T18:24:17.870 に答える