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];
Table View Controllerに追加します...
- (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];
}
これをグループ化されたテーブルスタイルなしで実行するもう1つの方法がありますが、おそらくこれは推測できないはずです。追加中 ヘッダと テーブルへのフッター (おそらくどちらか一方で十分、チェックしていません) セパレーターをフィラー/ブランク行から消します。
私はこれに遭遇しました。テーブルの上と下に小さなスペースを設けて、太った指の付いたテーブルセルではなくボタンを押す危険性を減らすためです。これはヘッダーとフッターとして空白のビューを固定する方法です。好きな高さを使用しても、余分な区切り線は削除されます。
- (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]
に設定します。テーブルの下部に赤いバーが表示されない場合は、フッターが設定されていません。
SwiftのUITableViewで空行の余分な区切り線を削除する
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.yourTableview.tableFooterView = UIView()
}
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をありがとうございます:)
フッターとしてUIView
をUITableView
にドラッグするだけです。フッタービューの高さを0に設定します。
これを試して。それは私のために働きました:
- (void) viewDidLoad
{
[super viewDidLoad];
// Without ARC
//self.tableView.tableFooterView = [[[UIView alloc] init] autorelease];
// With ARC, tried on Xcode 5
self.tableView.tableFooterView = [UIView new];
}
override func viewDidLoad() {
super.viewDidLoad()
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
Swiftを使用している場合は、テーブルビューを管理するコントローラのviewDidLoadに次のコードを追加します。
override func viewDidLoad() {
super.viewDidLoad()
//...
// Remove extra separators
tableView.tableFooterView = UIView(frame: CGRectZero)
}
Swift 4.0ではCGRectZeroは推奨されないので、CGRect.zero
を使用する必要があります。
J. Costaの解決策を前進させる:このコード行を入れることで、テーブルをグローバルに変更することができます。
[[UITableView appearance] setTableFooterView:[[UIView alloc] initWithFrame:CGRectZero]];
最初の可能なメソッド内(通常はAppDelegate
内、:application:didFinishLaunchingWithOptions:
メソッド内)。
私はこの質問が答えを受け入れたことを知っていますが、私はここでUITableView
の余分な区切り線を隠す方法について様々な方法を置きます。
tableView
の標準的な区切り線を非表示にして、各セルの上部にカスタム行を追加することができます。
更新:
カスタムセパレータを追加する最も簡単な方法は、1pxの高さの単純なUIView
を追加することです。
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];
}
OR私が今までにない最高でシンプルな方法は
self.tableView.tableFooterView = [[UIView alloc] init];
いずれかを試してください。
このコードを追加するだけです(Swift)。 。
tableView.tableFooterView = UIView()
swift 3.0では、uitableviewの追加の区切り線が非表示になります。
self.tbltableView.tableFooterView = UIView(frame: .zero)
Swiftは次のものとうまく連携します。
tableView.tableFooterView = UIView()
最後のセルの後に区切り文字が不要な場合は、フッターにゼロに近いがゼロ以外の高さが必要です。
あなたのUITableViewDelegate
で:
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return .leastNormalMagnitude
}
あなたはこの質問に対するたくさんの答えを見つけるかもしれません。それらのほとんどは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の下から余分な区切り線を削除するには、次の2行のコードを書き留めるだけで余分な区切り文字が削除されます。
tableView.sectionFooterHeight = 0.f;
tableView.sectionHeaderHeight = 0.f;
このトリックはずっと私のために働いています、自分で試してみてください。
TableViewCellのx0 y-1の位置に、背景色、幅100%、高さ1ピクセルの希望の区切り色でビューを追加するだけです。 tableViewCellがサブビューをクリップしないようにしてください。代わりに、tableViewがクリップする必要があります。
したがって、コードやIBごとにハックを加えることなく、既存のセル間でのみ簡単で実用的なセパレータを使用できます。
注:垂直方向のトップバウンスでは1番目のセパレータが表示されますが、これは問題にならないはずです。これがデフォルトのiOSの動作です。
テーブルビューを使用して固定数の固定高さの行を表示していたので、サイズを変更してスクロール不可にしました。
UITableviewで不要なスペースを削除したい場合は、以下の2つの方法を使用できます。
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return 0.1;
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return 0.1;
}
これでやってみる
目的Cの
- (void)viewDidLoad
{
[super viewDidLoad];
// This will remove extra separators from tableview
self.yourTableView.tableFooterView = [UIView new];
}
Swift用
override func viewDidLoad() {
super.viewDidLoad()
self.yourTableView.tableFooterView = UIView()
}
私はいくつかの受け入れられた答え(iOS 9+、Swift 2.2)を実装して運が良かった。私は実装しようとしました:
self.tableView.tableFooterView = UIView(frame: .zero)
しかし、私のtableView
には影響がありませんでした - UITableViewController
を使用していたという事実と関係があるかもしれません。
代わりに、viewForFooterInSection
メソッドをオーバーライドするだけで済みました(tableFooterView
を他の場所に設定しなかった)。
override func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
return UIView(frame: .zero)
}
これは単一のセクションを持つtableView
に対してはうまくいきました(複数のセクションがある場合は、最後のセクションを指定する必要があります)。
全体に役立つこの小さなTableview拡張機能を追加しました
extension UITableView {
func removeExtraCells() {
tableFooterView = UIView(frame: .zero)
}
}
searchbar
にview
がある場合(例えば、結果の数を制限するため)、shouldReloadTableForSearchString
とshouldReloadTableForSearchScope:
に以下を追加する必要があります。
controller.searchResultsTable.footerView = [ [ UIView alloc ] initWithFrame:CGRectZero ];
UIKit
がtableView
を持つ場合、tableFooterView
は空のセルを作成しません。そのため、トリックを作成し、高さゼロのUIView
オブジェクトをtableView
のフッターとして割り当てることができます。
tableView.tableFooterView = UIView()
これを試して
self.tables.tableFooterView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 10.0f)];
Swift(私は4.0を使用しています)では、カスタムのUITableViewCell
クラスと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)
}