このコードを使用して、TableViewにフッターを追加しています。 20個のセクションがあり、各セクションには数行あります。 titleForHeaderInSectionおよびsectionForSectionIndexTitleメソッドがあります。
CGRect footerRect = CGRectMake(0, 0, 320, 40);
UILabel *tableFooter = [[UILabel alloc] initWithFrame:footerRect];
tableFooter.textColor = [UIColor blueColor];
tableFooter.backgroundColor = [self.theTable backgroundColor];
tableFooter.opaque = YES;
tableFooter.font = [UIFont boldSystemFontOfSize:15];
tableFooter.text = @"test";
self.theTable.tableFooterView = tableFooter;
[tableFooter release];
何が間違っていますか?
おかげで、
RL
UITableViewDelegateメソッドを実装する必要があります
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
テーブルの適切なセクションの目的のビュー(フッターに必要なテキストを含むUILabelなど)を返します。
私のコードで具体的に見ているのは
self.theTable.tableFooterView = tableFooter;
作品と
[self.theTable.tableFooterView addSubview:tableFooter];
動作しません。だから前者に固執し、可能なバグを他の場所で探してください。 HTH
私はそれを使用し、それは完璧に働いた:)
UIView* footerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 500)];
[footerView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"ProductCellBackground.png"]]];
self.tableView.tableFooterView = footerView;
[self.tableView setSeparatorStyle:(UITableViewCellSeparatorStyleNone)];
[self.tableView setContentInset:(UIEdgeInsetsMake(0, 0, -500, 0))];
最初は、この方法を試していました。
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
しかし、これを以下と一緒に使用した後:
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
問題は解決しました。サンプルプログラム
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return 30.0f;
}
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
UIView *sampleView = [[UIView alloc] init];
sampleView.frame = CGRectMake(SCREEN_WIDTH/2, 5, 60, 4);
sampleView.backgroundColor = [UIColor blackColor];
return sampleView;
}
uITableViewDelegateプロトコルを含めます。
@interface TestViewController : UIViewController <UITableViewDelegate>
これはかなり古い質問であることは知っていますが、同じ問題に出会ったばかりです。正確な理由はわかりませんが、tableFooterViewはUIViewのインスタンス(「種類」ではなく「メンバー」)にしかなれないようです...だから、私の場合、新しいUIViewオブジェクト(wrapperViewなど)を作成しましたカスタムサブビューを追加します...あなたの場合、次からコードを変更してください:
CGRect footerRect = CGRectMake(0, 0, 320, 40);
UILabel *tableFooter = [[UILabel alloc] initWithFrame:footerRect];
tableFooter.textColor = [UIColor blueColor];
tableFooter.backgroundColor = [self.theTable backgroundColor];
tableFooter.opaque = YES;
tableFooter.font = [UIFont boldSystemFontOfSize:15];
tableFooter.text = @"test";
self.theTable.tableFooterView = tableFooter;
[tableFooter release];
に:
CGRect footerRect = CGRectMake(0, 0, 320, 40);
UIView *wrapperView = [[UIView alloc] initWithFrame:footerRect];
UILabel *tableFooter = [[UILabel alloc] initWithFrame:footerRect];
tableFooter.textColor = [UIColor blueColor];
tableFooter.backgroundColor = [self.theTable backgroundColor];
tableFooter.opaque = YES;
tableFooter.font = [UIFont boldSystemFontOfSize:15];
tableFooter.text = @"test";
[wrapperView addSubview:tableFooter];
self.theTable.tableFooterView = wrapperView;
[wrapperView release];
[tableFooter release];
それが役に立てば幸い。わたしにはできる。
これらのサンプルはうまく機能します。セクションを確認してから、セクションを表示または非表示にする高さを返すことができます。 UITableViewDelegate
からViewControllerを拡張することを忘れないでください。
Objective-C
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
if (section == 0)
{
// to hide footer for section 0
return 0.0;
}
else
{
// show footer for every section except section 0
return HEIGHT_YOU_WANT;
}
}
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
UIView *footerView = [[UIView alloc] init];
footerView.backgroundColor = [UIColor blackColor];
return footerView;
}
スイフト
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
let footerView = UIView()
footerView.backgroundColor = UIColor.black
return footerView
}
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
if section == 0 {
// to hide footer for section 0
return 0.0
} else {
// show footer for every section except section 0
return HEIGHT_YOU_WANT
}
}
Swift 2.1.1以下が機能します:
func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
let v = UIView()
v.backgroundColor = UIColor.RGB(53, 60, 62)
return v
}
func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return 80
}
self.theTable.tableFooterView = tableFooter
を使用する場合、最後の行とtableFooterView
の間にスペースがあります。
[self.tableView setTableFooterView:footerView];
私は同じ問題を抱えていましたが、ヘッダーの次の行を置き換えました:
@interface MyController : UIViewTableViewController <UITableViewDelegate, UITableViewDataSource>
この行で、期待どおりに動作します:
@interface RequestViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
UIViewControllerに注目してください。幸運を :)
の代わりに
self.theTable.tableFooterView = tableFooter;
試してみる
[self.theTable.tableFooterView addSubview:tableFooter];
スティッキーボトムエフェクトを好まない場合は、viewDidLoad()
に入れます https://stackoverflow.com/a/38176479/412767