問題を説明する前に、これはこの質問とは別の問題であることを最初に指摘しておきます。
問題
このスクリーンショットは、tableView:didSelectRowAtIndexPath:にブレークを設定して撮影されたもので、シミュレーター(画像の右端)に表示されているように、選択したセルの下部に1ピクセルの青い線があります。これは、クライアントが要求するデザインではなく、このアプリが以前どのように動作していたかでもありません。選択した場合でも、セパレーターはありません。
入手方法 最初は、対応するnib(.xib)ファイルを含むカスタムUITableViewCellクラスを使用してこのテーブルビューを設計しましたが、選択に問題はありませんでした。セパレーターは必要に応じて非表示になりました。予想通り、ビュー階層からのすべてのオーバーヘッドのためにスクロールが遅くなったので、ローレンブライターの高速スクロールソリューションを使用するようにカスタムセルを作り直しました。今ではスクロールははるかに高速ですが、私は一生の間セパレーターを取り除くことができません。
私が試したこと
上のスクリーンショットの時点で...
- テーブルビューには、IBに「Separator[なし]」があります。
- テーブルビューを含むUIViewControllerには、viewDidLoadに次の行があります。
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
スクリーンショットでわかるように、separatorStyleが希望どおりに設定されていることを証明するために、未使用の行をいくつか挿入しました。他のテストでは、tableViewとself.tableViewが同じブレークポイントで同等のポインターであることを確認しています。
また、tableView.separatorColorを黒とクリアに設定してみましたが、すべて同じ結果になりました。選択が行われるまで、セルは正しく表示されます。
Manjunath:セルがタッチされているかどうかに応じて、別の背景を描画するために使用しているコードは次のとおりです。スクリーンショットで違いを確認できます(アニメーション化すると微妙ではありません)。
if(self.highlighted) {
textColor = [UIColor blackColor];
UIImage *bg = [UIImage imageNamed:@"image-cell-background_highlighted.png"];
[bg drawAtPoint:CGPointMake(0.0, 1.0)];
}
else {
UIImage *bg = [UIImage imageNamed:@"image-cell-background.png"];
[bg drawAtPoint:CGPointMake(0.0, 0.0)];
}
これは、BrichterdrawContentView:
氏のABTableViewCellスーパークラスから継承されたメソッドであるUIImageCell.mで呼び出されます。