web-dev-qa-db-ja.com

UITableViewCellセパレータが表示されない

IBでカスタムUITableViewCellを作成しましたが、何らかの理由で、セパレーターの単一行オプションが選択されているにもかかわらず、テーブルにセパレーター行がありません。

これは以前に誰かに起こったことがありますか?何が得られますか?

ありがとう!

29
DexterW

IBのUITableViewCellは、drawRect:をオーバーライドするUITableViewCellサブクラスに関連付けられていますか?その場合は、スーパー実装を呼び出していることを確認してください。これが下部に線を引きます。 layoutSubviewsをオーバーライドする場合は、セルの下部を覆い隠しているビューがないことを確認してください。

51
Brian

これは古い投稿ですが、注意が必要です。

シミュレーターを使用していて、セル間にUITableViewセパレーターが表示されない場合は、ウィンドウスケールが小さすぎることが原因である可能性があります。

ウィンドウ->スケール-> 100%に移動してこれを変更します

53
LPace

私の場合、layoutSubviewsメソッドをオーバーライドした後、[superlayoutSubviews]を呼び出すのを忘れました。問題を見つけるのに2時間かかりました。

26
Maciej Swic

私の場合、tableViewのseparatorStyleプロパティを設定する必要があります

tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;

2
pinux

ITableViewクラス参照separatorStyleを見つけました。デリゲートメソッドによって返されるセルにseparatorStyleを追加すると書かれています tableView:cellForRowAtIndex:

したがって、UITableViewインスタンスのstyleプロパティを変更する必要があると思います。

1
AechoLiu

これを見ている人のために:私の問題は、複数のセクションがあり、各セクションの最初のセルに区切り文字がないことでした。テーブルビューで、heightForHeader関数を上書きしました(0を返します)。これを削除すると問題が修正されました。

0
Mavrick Laakso

ありそうもないケースかもしれませんが、別の考えられる原因があります。

AddressBookTableViewというカスタムのUITableViewがあり、ViewControllerの1つの.XIBに含まれています。私が気付いたのは、AddressBookTableViewとして指定されたカスタムクラスを持つUIView要素として追加されたことです。この要素を削除し、代わりにUITableView要素を追加しました。そのクラスは、AddressBookTableViewとして再度指定し、セパレーターが魔法のように再表示されました。

これを見つけるのに非常に長い時間がかかりました...

カスタムUITableView.XIB要素が実際にカスタムUITableView要素であり、名前がUIView要素に変更されていないことを確認してください。

正直なところ、この間違いの唯一の顕著なアーティファクトは、セパレーターが欠落していることでした。それ以外は、UITableViewはまだ正常に機能していましたか?

0
alexgophermix

プログラムでセルにサブビューを追加する場合は、必ずサブビューを追加してください

to cell.contentViewそしてNOT tocell

[cell.contentView addSubview:subview];
0
Offek