私はしばらくの間フッタービューを非表示にするに取り組んでいます。私の問題は、ボタンをクリックするとフッターにボタンがあり、最後のセクションとして1つのセクションが下に追加され、ボタンも新しく作成されたセクションに移動するので、表の前のセクションでフッターを非表示にしたいです。セクションの更新後。
footerView.hidden = YES
これをボタンアクションで使用しましたが、機能しません。
4つの解決策があります。彼らです、
ソリューション1:
tableView.sectionHeaderHeight = 0.0;
tableView.sectionFooterHeight = 0.0;
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger )section {
return 1.0;
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger )section {
return 1.0;
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger )section {
return [[UIView alloc] initWithFrame:CGRectZero];
}
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger )section {
return [[UIView alloc] initWithFrame:CGRectZero];
}
ソリューション2:
サイズタブの下のインターフェースビルダーを介してフッター/ヘッダーの高さを設定できます。
ソリューション3:
セットcontentInsetプロパティ。
self.tableView.contentInset = UIEdgeInsetsMake(-20, 0, -20, 0);
上部と下部をエッジに接触させるために使用されます。
ソリューション4:
以下を実装し、条件に従って値を設定します。 0.0は受け入れられません。下限値は1.0にする必要があります。
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger )section {
if(section == 0) {
return 6;
} else {
return 1.0;
}
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger )section {
return 5.0;
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger )section {
return [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
}
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger )section {
return [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
}
これはそれをするべきです
tableView.tableFooterView.hidden = YES;
これはデリゲートメソッドを実装することでそれを行うことができます
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
return CGFLOAT_MIN;
}
@ J.Hongの回答を参照すると、Swift4バージョン(iOS 11.3):
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return .leastNonzeroMagnitude
}
@Tim Newtonの回答との比較:
titleForFooterInSection
を呼び出す必要はありませんCGFloat.leastNormalMagnitude
-> .leastNonzeroMagnitude
(より迅速なIMO)Swift 3.前のセルと次のヘッダーの間の厄介な1px境界も削除するソリューション。
override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return CGFloat.leastNormalMagnitude
}
override func tableView(_ tableView: UITableView, titleForFooterInSection section: Int) -> String? {
return nil
}
swift4の場合:
self.tableView.tableFooterView = nil
カスタムビューを使用しない場合は、tableView:titleForFooterInSection:
からnil
を返し、0
からtableView:heightForFooterInSection:
を返します。
@property(nonatomic, strong) NSString *footerTitle;
@property(nonatomic, assign) BOOL shouldHideFooter;
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
{
return self.shouldHideFooter ? nil : self.footerTitle;
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return self.shouldHideFooter ? 0 : UITableViewAutomaticDimension;
}