1

私は自分自身にあまりにも多くの時間を費やしたというバグがあります。基本的に、Apple ドキュメントに基づいて「アコーディオン」テーブル ビューを作成してい ます。 DTS40010139-ReadMe_txt-DontLinkElementID_3 テーブル ビュー ヘッダーをタップすると、コードが呼び出されてそのセクションに行が追加されます。

唯一の違いは、それが iOS 5 用であるという事実です。そのため、私のヘッダー ビューでは、再利用可能なヘッダー ビューのものを使用していません。

基本的に、ヘッダーをクリックして行を表示するたびに、[tableView beginUpdates]/[tableView endUpdates] を介して追加/削除されたセルが黒くなります。ただし、後でテーブルビューをスクロールすると、通常の状態に戻ります。

この動作を示す写真: http://imgur.com/a/B3lMu

セルを削除する方法のコード:

// GET THE SECTION INFO
SWDeviceSectionInfo *deviceSectionInfo = [self.deviceTableSectionInfo objectAtIndex:section];
// "CLOSE" THE SECTION
deviceSectionInfo.open = NO;

// CREATE INDEX PATHS FOR ROWS THAT NEED TO BE DELETED
NSMutableArray *indexPathsToDelete = [[NSMutableArray alloc] init];

for (int i=0;i<deviceSectionInfo.rowInfo.count;i++) {

    // CREATE INDEX PATHS FOR EACH ROW
    [indexPathsToDelete addObject:[NSIndexPath indexPathForRow:i inSection:section]];
}

// APPLY THE ROW INSERTIONS
[self.deviceTableView beginUpdates];
[self.deviceTableView deleteRowsAtIndexPaths:indexPathsToDelete withRowAnimation:UITableViewRowAnimationBottom];
[self.deviceTableView endUpdates];

いくつかの追加メモ:

  1. テーブル ビューをスクロールした後のセルの背景は、テーブル ビューの背景です (セルの BG を設定できません)。黄色のビューは、緑色であるはずのセルの背景の上部にあるビューです。
  2. iOS シミュレーターのデバッグ「色」をクリックすると、黒いセルが消えます。
  3. 「強調表示」、「選択」された色をランダムな色に変更しようとしましたが、何も変わりません。黒いセルのバグのままです。
  4. 間違ったセクションにセルを追加するなどのコードをトリプルチェックしましたが、すべて正しいようです。
  5. このバグは、デフォルトの白セル (カスタムペン先なし) を使用したときにも発生しました。
4

1 に答える 1

1

問題は、テーブルの上にビューがあったことです。

具体的には、ビューの背景色をクリアし、影を追加して「内側の影」を形成しました。

そのビューが原因で、テーブルが更新されたときにテーブルが完全に間違ってレンダリングされました。

于 2013-06-07T04:06:36.113 に答える