0
実行時にプログラムでセルに追加するUIImageViewを使用して、すべてのテーブルビューセルにカスタムの境界線を追加しようとしています。問題は、ユーザーがスクロールすると、ボーダーがランダムに消えてしまうことが多いことです。UITableViewCellに境界線サブビューを動的に追加する
このコードは私のcellForRowAtIndexPath方法である:
UIImageView* border = (UIImageView*)[cell viewWithTag:10];
if (border)
[border removeFromSuperview];
NSInteger sectionRows = [tableView numberOfRowsInSection:[indexPath section]];
NSInteger row = indexPath.row;
if (row != sectionRows - 1) {
UIImageView* border = [[UIImageView alloc] initWithImage:[[ImageManager sharedManager] imageNamed:@"dashed_border"]];
[border setFrame:CGRectMake(10, [self tableView:tableView heightForRowAtIndexPath:indexPath], 290, 1)];
[border setTag:10];
[cell addSubview:border];
[border release];
}
が存在する場合には、境界サブビューを削除し、行が最下行でない場合は、行の下部にある境界線を挿入します。
これが競合状態であるかどうか、またはユーザーがスクロールするときにcellForRowAtIndexPathが呼び出されない特定の時間があるかどうかはわかりません。
セクションの行数はこれまでに変更されていますか? – smparkes
そして何をするにしても、いつもボーダーを取り除いて再追加するのが一番一般的なケースのように思えます。代わりに、それがそこにあり、あなたが最後の行である場合にのみ、それを削除してください。通常はそれほどシンプルではありませんが、テーブルビューのセルでは、必要のない作業はしたくありません。 – smparkes
いいえ、行の数は、コレクション内のアイテムの数に応じて設定されます。 – James