私はいくつかのデータを持つ単純なUITableView
を表示しようとしています。テーブルの最後に空のセルが表示されないようにUITableView
の静的な高さを設定したいです。それ、どうやったら出来るの?
コード:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSLog(@"%d", [arr count]);
return [arr count];
}
次のように、(おそらくあなたのviewDidLoad
メソッドで)高さゼロのテーブルフッタービューを設定します。
スイフト:
tableView.tableFooterView = UIView()
Objective-C:
tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
表には表示するフッターがあると考えているため、明示的に要求したセル以外のセルは表示されません。
インターフェースビルダーの助言:
xib/Storyboardを使用している場合は、UIView(高さ0pt)をUITableViewの下部にドラッグするだけです。
Swift 3の構文:
tableView.tableFooterView = UIView(frame: .zero)
速い構文:<2.0
tableView.tableFooterView = UIView(frame: CGRect.zeroRect)
Swift 2.0の構文:
tableView.tableFooterView = UIView(frame: CGRect.zero)
ストーリーボードでUITableView
を選択し、スタイルプロパティをPlain
からGrouped
に変更します。
Xcode 6.1上のSwiftで実装
self.tableView.tableFooterView = UIView(frame: CGRectZero)
self.tableView.tableFooterView?.hidden = true
2行目のコードはプレゼンテーションには影響しません。が隠れているかどうかを確認するために使用できます。
このリンクからの回答 UITableView Swiftで空のセルを非表示にできない
今のところコメントは追加できませんので回答として追加してください。
@ Andyの答えはよく、次のコードでも同じ結果が得られます。
tableView.tableFooterView = [UIView new];
'new'メソッドはNSObject
クラスに属し、alloc
に対してinit
およびUIView
メソッドを呼び出します。
私はコードを試してみました:
tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
viewDidLoadセクションとxcode6に警告が表示されました。私は「自己」を入れました。それの前でそして今それはうまく働きます。だから私が使用する作業コードは次のとおりです。
self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
または、tableViewメソッドを呼び出してフッターの高さを1ポイントに設定すると、最後の行が追加されますが、フッターの背景色を設定して非表示にすることもできます。
コード:
func tableView(tableView: UITableView,heightForFooterInSection section: Int) -> CGFloat {
return 1
}
UITableViewController
を使う
受け入れられた解決策はTableViewCell
の高さを変えるでしょう。これを修正するには、以下のステップを実行してください。
下記のコードスニペットをViewDidLoad
メソッドに記述します。
tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
TableViewClass.m
ファイルに次のメソッドを追加します。
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return (cell height set on storyboard);
}
それでおしまい。プロジェクトを構築して実行できます。
override func viewWillAppear(animated: Bool) {
self.tableView.tableFooterView = UIView(frame: CGRect.zeroRect)
/// OR
self.tableView.tableFooterView = UIView()
}
下記の方法で:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (([array count]*65) > [UIScreen mainScreen].bounds.size.height - 66)
{
Table.frame = CGRectMake(0, 66, self.view.frame.size.width, [array count]*65));
}
else
{
Table.frame = CGRectMake(0, 66, self.view.frame.size.width, [UIScreen mainScreen].bounds.size.height - 66);
}
return [array count];
}
ここで、65はセルの高さ、66はUIViewControllerのナビゲーションバーの高さです。