回答:
UIViewをテーブルにドラッグするだけです。ストーリーボードでは、カスタムセルの下の上部に配置されます。「フッター」という名前を付けることをお勧めします。
ここでは明確にするために緑色で表示されていますが、おそらくクリアな色が必要です。
高さを調整することにより、必要に応じて、テーブルの「ボトムバウンス」の処理方法に影響を与えることができます。(通常、高さゼロは問題ありません)。
プログラムでそれを行うには:
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.tableFooterView = UIView()
}
- (void)viewDidLoad
{
[super viewDidLoad];
// This will remove extra separators from tableview
self.tableView.tableFooterView = [UIView new];
}
または、必要に応じて
self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
テーブルビューコントローラーに追加...
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
// This will create a "invisible" footer
return CGFLOAT_MIN;
}
そして必要に応じて...
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
return [UIView new];
// If you are not using ARC:
// return [[UIView new] autorelease];
}
tableFooterView
テーブルはまだその細胞下コンテンツ予想として、葉を行の最後のセルにセパレータ。ヒストリカルな方法を使用すると、最後のセパレーターがなくなり、全体的に見栄えがよくなります。
グループ化されたテーブルスタイルを使用せずにこれを実行する別の方法を次に示します。ヘッダーとフッターをテーブルに追加すると(おそらくチェックされていないため、いずれかで十分です)、セパレーターがフィラー/空白行から消えます。
私はこれに偶然出会いました。テーブルの上部と下部に少しスペースをとり、肉の指でテーブルセルではなくボタンを押すリスクを減らしたいからです。空白のビューをヘッダーとフッターとして貼り付ける方法は次のとおりです。任意の高さを使用しても、余分な区切り線は削除されます。
- (void) addHeaderAndFooter
{
UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 10)];
v.backgroundColor = [UIColor clearColor];
[self.myTableView setTableHeaderView:v];
[self.myTableView setTableFooterView:v];
[v release];
}
@Casebashへの応答として、アプリのコード(iTunesストアの「AcmeLists」リストマネージャー...)に戻り、addHeaderAndFooterメソッドを短絡して確認しました。それがなければ、余分な行セパレーターがあります。コードを使用すると、このウィンドウスナップに表示されるものが表示されます。テーブルの行セパレータの画像はありません。なぜそれがうまくいかなかったのかわかりません。さらに、テーブルビューにカスタムフッターがある場合、その下の空白行の行セパレーターの描画を必ず停止する必要があることは、私には理にかなっています。それは恐ろしいでしょう。参考までに、画面に表示できるよりも多くの行があるテーブルと、2つの行があるテーブルを調べました。どちらの場合も、無関係なセパレータはありません。
おそらく、カスタムビューは実際には追加されていません。これを確認するには、背景色をなど以外clearColor
に設定します[UIColor redColor]
。テーブルの下部に赤いバーが表示されない場合は、フッターが設定されていません。
wkwを拡張したい回答ます:
高さ0のフッターのみを追加するだけでうまくいきます。(SDK 4.2、4.4.1でテスト済み)
- (void) addFooter
{
UIView *v = [[UIView alloc] initWithFrame:CGRectZero];
[self.myTableView setTableFooterView:v];
}
またはさらに簡単-テーブルビューを設定する場所に、次の行を追加します。
//change height value if extra space is needed at the bottom.
[_tableView setTableFooterView:[[UIView alloc] initWithFrame:CGRectMake(0,0,0,0)]];
またはさらに簡単-セパレータを単に削除するには:
[_tableView setTableFooterView:[UIView new]];
再びwkwに感謝します:)
Swiftを使用している場合は、次のコードを、テーブルビューを管理するコントローラーのviewDidLoadに追加します。
override func viewDidLoad() {
super.viewDidLoad()
//...
// Remove extra separators
tableView.tableFooterView = UIView()
}
最後に空のフッターを追加するだけで、空のセルが非表示になりますが、見た目も非常に醜くなります。
tableView.tableFooterView = UIView()
より良い方法があります。フッターと空のセルも表示されなくなるため、テーブルビューの最後に1ポイントの線を追加します。
let footerView = UIView()
footerView.frame = CGRect(x: 0, y: 0, width: tableView.frame.size.width, height: 1)
footerView.backgroundColor = tableView.separatorColor
tableView.tableFooterView = footerView
J.コスタのソリューションの前進:次のコード行を置くことにより、テーブルにグローバルな変更を加えることができます。
[[UITableView appearance] setTableFooterView:[[UIView alloc] initWithFrame:CGRectZero]];
最初の可能なメソッドの内部(通常はAppDelegate
、in:application:didFinishLaunchingWithOptions:
メソッド)。
私はこの質問が受け入れられた答えであることを知っていますが、私はここに余分な区切り線を非表示にする方法のさまざまな方法を入れました UITableView
。
あなたは隠すことができます tableView
の標準の区切り線をして、各セルの上部にカスタム線を追加できます。
更新:
カスタムセパレーターを追加する最も簡単な方法はUIView
、1pxの単純な高さを追加することです:
UIView* separatorLineView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 1)];
separatorLineView.backgroundColor = [UIColor grayColor]; /// may be here is clearColor;
[cell.contentView addSubview:separatorLineView];
または
self.tblView=[[UITableView alloc] initWithFrame:CGRectMake(0,0,320,370) style:UITableViewStylePlain];
self.tblView.delegate=self;
self.tblView.dataSource=self;
[self.view addSubview:self.tblView];
UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 10)];
v.backgroundColor = [UIColor clearColor];
[self.tblView setTableHeaderView:v];
[self.tblView setTableFooterView:v];
[v release];
または
- (float)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
// This will create a "invisible" footer
return 0.01f;
}
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
// To "clear" the footer view
return [[UIView new] autorelease];
}
または 私が今までに好きな最も簡単な方法は
self.tableView.tableFooterView = [[UIView alloc] init];
いずれかを試してください。
この質問に対する答えはたくさんあります。それらのほとんどは、UITableView
のtableFooterView
属性を操作するため のものであり、これは空の行を非表示にする適切な方法です。便宜上、Interface Builderから空の行をオン/オフできるようにする単純な拡張を作成しました。この要旨ファイルから確認できます。あなたの時間を少し節約できるといいのですが。
extension UITableView {
@IBInspectable
var isEmptyRowsHidden: Bool {
get {
return tableFooterView != nil
}
set {
if newValue {
tableFooterView = UIView(frame: .zero)
} else {
tableFooterView = nil
}
}
}
}
使用法:
tableView.isEmptyRowsHidden = true
uitableview余分な区切り線を隠す余分な区切り線をSwift 3.0で隠す
self.tbltableView.tableFooterView = UIView(frame: .zero)
Swiftは以下とうまく連携します。
tableView.tableFooterView = UIView()
プログラムでUItableviewの下部から余分な区切り線を削除するには、次の2行のコードを書き留めれば、余分な区切り線が削除されます。
tableView.sectionFooterHeight = 0.f;
tableView.sectionHeaderHeight = 0.f;
このトリックはいつも私のために働いています、自分で試してください。
受け入れられた回答(iOS 9以降、Swift 2.2)を1つ実装することに幸運がありました。私は実装しようとしました:
self.tableView.tableFooterView = UIView(frame: .zero)
しかし、私には何の影響もありませtableView
んでしたUITableViewController
。私が使用していたという事実と関係があるのではないかと思います。
代わりに、viewForFooterInSection
メソッドをオーバーライドするだけで済みました(tableFooterView
他の場所には設定しませんでした)。
override func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
return UIView(frame: .zero)
}
これはtableView
、1つのセクションのある場合にうまく機能しました(複数のセクションがある場合は、最後のセクションを指定する必要があります)。
セクションが1つしかない場合は、テーブルビューのスタイルを "プレーン"から "グループ化"に設定するのが最も簡単な方法です。(画像を参照)
セクションがさらにある場合は、ヘッダーの高さをゼロに設定する必要がある場合があります(お客様/お客様/プロジェクトマネージャーの好みによる)
より多くのセクションがあり、ヘッダーを混乱させたくない場合(たとえそれが最も単純なケースでは1行だけであっても)、前の回答で説明したように、UIViewをフッターとして設定する必要があります)
すばやく簡単なSwift 4ウェイ。
override func viewDidLoad() {
tableView.tableFooterView = UIView(frame: .zero)
}
静的細胞がある場合。インスペクターウィンドウからセパレーターをオフにすることもできます。(これは、セパレータが必要な場合は望ましくありません。その場合、上記の方法を使用してください)
super.viewDidLoad()
)に関するより良い説明があり、wikiの回答の上部に含まれています。すべてのセパレータを削除することに関しては、それはこの質問が本当にそういうことではないので、最後の編集をロールバックするか、回答を完全に削除するか、あるいはその両方を行ってください。
私は全体的に役立つこの小さなテーブルビュー拡張機能を追加しました
extension UITableView {
func removeExtraCells() {
tableFooterView = UIView(frame: .zero)
}
}
場合にはあなたが持っているsearchbar
中で、あなたのview
(例えば結果の数を制限するために)、あなたはまたに次のように追加する必要がありますshouldReloadTableForSearchString
し、shouldReloadTableForSearchScope:
controller.searchResultsTable.footerView = [ [ UIView alloc ] initWithFrame:CGRectZero ];
スウィフト(私は4.0を使用しています)では、カスタム作成することによって、これを達成することができUITableViewCell
、クラス、およびメソッドを。次に、すべてを0にします。(テーブルビューのあるメインクラスの背景はクリアです)色。overriding
setSelected
separator insets
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// eliminate extra separators below UITableView
self.separatorInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
}