IBでカスタムUITableViewCellを作成しましたが、何らかの理由で、セパレーターの単一行オプションが選択されているにもかかわらず、テーブルにセパレーター行がありません。
これは以前に誰かに起こったことがありますか?何が得られますか?
ありがとう!
IBのUITableViewCellは、drawRect:
をオーバーライドするUITableViewCellサブクラスに関連付けられていますか?その場合は、スーパー実装を呼び出していることを確認してください。これが下部に線を引きます。 layoutSubviews
をオーバーライドする場合は、セルの下部を覆い隠しているビューがないことを確認してください。
これは古い投稿ですが、注意が必要です。
シミュレーターを使用していて、セル間にUITableViewセパレーターが表示されない場合は、ウィンドウスケールが小さすぎることが原因である可能性があります。
ウィンドウ->スケール-> 100%に移動してこれを変更します
私の場合、layoutSubviewsメソッドをオーバーライドした後、[superlayoutSubviews]を呼び出すのを忘れました。問題を見つけるのに2時間かかりました。
私の場合、tableViewのseparatorStyleプロパティを設定する必要があります
tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
ITableViewクラス参照 でseparatorStyle
を見つけました。デリゲートメソッドによって返されるセルにseparatorStyleを追加すると書かれています tableView:cellForRowAtIndex: 。
したがって、UITableViewインスタンスのstyleプロパティを変更する必要があると思います。
これを見ている人のために:私の問題は、複数のセクションがあり、各セクションの最初のセルに区切り文字がないことでした。テーブルビューで、heightForHeader関数を上書きしました(0を返します)。これを削除すると問題が修正されました。
ありそうもないケースかもしれませんが、別の考えられる原因があります。
AddressBookTableViewというカスタムのUITableView
があり、ViewControllerの1つの.XIBに含まれています。私が気付いたのは、AddressBookTableViewとして指定されたカスタムクラスを持つUIView
要素として追加されたことです。この要素を削除し、代わりにUITableView
要素を追加しました。そのクラスは、AddressBookTableViewとして再度指定し、セパレーターが魔法のように再表示されました。
これを見つけるのに非常に長い時間がかかりました...
カスタムUITableView
.XIB要素が実際にカスタムUITableView
要素であり、名前がUIView
要素に変更されていないことを確認してください。
正直なところ、この間違いの唯一の顕著なアーティファクトは、セパレーターが欠落していることでした。それ以外は、UITableViewはまだ正常に機能していましたか?
プログラムでセルにサブビューを追加する場合は、必ずサブビューを追加してください
to cell.contentViewそしてNOT tocell
[cell.contentView addSubview:subview];