コーディングでUITableView
を実装しました。 UITableViewCellSeparatorStyleNone
も設定しました。 iOS8以下では非表示になっていますが、iOS9ベータでは非表示ではありません。
LayoutSubviewsメソッドでセパレータスタイルをNoneに設定してください。
制約ベースのレイアウトが使用される場合、基本実装は制約ベースのレイアウトを適用し、separatorStyleをUITableViewCellSeparatorStyleに設定します。このメソッドのNoneは、セパレーターを非表示にします。
私も同じ問題に直面しています。私の回避策はただ設定することでした
tableView.separatorColor = UIColor.clearColor()
。
私の調査によると、iOS9のせいではなく、Xcode7.0ベータ4です。
Xcode 7.0ベータ4を使用してアプリをビルドすると、InterfaceBuilderで[なし]に設定されている場合でもセル区切り文字が表示されます。 Xcode 6.4または7.0ベータ3で同じコードをビルドした場合、セパレーターは表示されません。
回避策として、ViewControllerでこれを明示的に呼び出すことができます。
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
(私はibtool
に問題があると思います)
Appleデベロッパフォーラム からの解決策は私のために働いた:
すべてのreloadDataメソッド(ios 9.1)の前にUITableViewCellSeparatorNoneを設定することで、セパレーターを削除できます。理由はわかりませんが、UITableViewは、reloadDataメソッドが呼び出された後、時間ごとにseparatorStyleとseparatorColorをリセットします。
セパレータのスタイルを.None
に設定しても機能しなかったため、ハックの回避策としてEdgeインセットを使用しました。
self.tableView.separatorInset.left = UIScreen.mainScreen().bounds.width
私は同じ問題を抱えていて、iOS 8で正常に動作しましたが、iOS9でセパレーターを表示します。セパレータのスタイルをすでにnoneに設定していました。以下は私のためにそれを解決しました
if ([cell respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]) {
cell.preservesSuperviewLayoutMargins = NO;
}
cell.separatorInset = UIEdgeInsetsMake(0.f, 0.f, 0.f, cell.bounds.size.width);
if([cell respondsToSelector:@selector(setLayoutMargins:)]) {
cell.layoutMargins = UIEdgeInsetsZero;
}
これは基本的に、はめ込みを使用してセパレーターを押しつぶします。
myTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
swift用
myTableView.separatorStyle = UITableViewCellSeparatorStyle.None
in cellForRowAtIndexPathメソッドは、iOS9以降で白い線を非表示にします。
この問題は非常に厄介です。そして、これが私の解決策です:
override func didMoveToSuperview() {
if self.superview != nil {
self.tableView.separatorStyle = .None
}
}
ビューがスーパービューに追加されたら、separatorStyleを再度設定します。