33

viewDidLoad メソッドでフッター ビューを設定しています。

UIView *fView = [[UIView alloc] initWithFrame:CGRectMake(0, 718, 239, 50)];
fView.backgroundColor =[UIColor yellowColor];
self.table.tableFooterView = fView;

残念ながら、フッターは(x,y)上記の指定では描画されていませんが、セルにくっついているため、テーブル ビューに 4 つのセルがある場合、フッターは 5 番目のセルに描画されます。

プロトコル方式も試してみましたが、tableView:viewForFooterInSection

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{

UIView *fView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 239, 50)];
fView.backgroundColor =[UIColor yellowColor];
    return fView;
}

問題は解決されていませんtableFooterView。テーブル ビューの下部にあるフッター ビューにプロパティが適合するはずですが、ここで何が欠けているのかわかりません。事前にサンクス。

4

10 に答える 10

54

あなたの目標は、画面の下部に固定されたままのフッターを作成し、テーブルと一緒にスクロールしないことであるため、テーブル ビュー フッターを使用することはできません。実際には、を使用することさえできませんUITableViewController

ビュー コントローラを として実装する必要がありますUIViewController。次に、独自のテーブル ビューをサブビューとして追加します。また、テーブル ビューではなく、View Controller のビューのサブビューとしてフッターを追加します。下部がフッター ビューの上部になるようにテーブル ビューのサイズを設定してください。

ビュー コントローラをUITableViewDataSourceおよびUITableViewDelegateプロトコルに準拠させ、すべてを接続して の機能を複製する必要がありますUITableViewController

于 2013-03-28T16:46:51.073 に答える
34

フッター ビューは常にコンテンツの下部に追加されます。
これは、ビューで設定した位置に関係なく、セクション フッターがセクションのセルの下に追加され、テーブル フッター ビューがすべてのセクションの下部に追加されることを意味します。

「静的」コンテンツを追加する場合は、テーブル ビュー (スーパービュー) の外側にビューを追加することを検討する必要があります。これは、使用する場合は不可能です。UITableViewControllerまたは[self.table addSubView:view]、位置/変換を使用してテーブル ビューのcontentOffsetプロパティに調整します。次のコードのように、scrollViewDidScroll:デリゲート メソッド (UITableViewのサブクラスであるUIScrollViewため、デリゲート呼び出しも取得します):

@implementation YourTableViewController {
    __weak UIView *_staticView;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    UIView *staticView = [[UIView alloc] initWithFrame:CGRectMake(0, self.tableView.bounds.size.height-50, self.tableView.bounds.size.width, 50)];
    staticView.backgroundColor = [UIColor redColor];
    [self.tableView addSubview:staticView];
    _staticView = staticView;
    self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 50, 0);
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    _staticView.transform = CGAffineTransformMakeTranslation(0, scrollView.contentOffset.y);
}

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    // this is needed to prevent cells from being displayed above our static view
    [self.tableView bringSubviewToFront:_staticView];
}

...
于 2013-03-28T16:40:52.893 に答える
15

もう 1 つの方法は、ストーリーボードで使用UITableViewControllerし、コンテナー ビューとして UIViewController 内に埋め込むことです。次に、自動レイアウトを使用して、フッターと、UITableView

于 2014-12-31T17:23:35.603 に答える
3

静的 UITableViewController の下部にラベルを固定することができました。すべてのシナリオに最適なソリューションではありませんが、私の単純なニーズには対応していました。

UIView* v = [[UIView alloc] initWithFrame:self.view.bounds];
CGFloat labelHeight = 30;
CGFloat padding = 5;
UILabel* l = [[UILabel alloc] initWithFrame:CGRectMake(0, v.frame.size.height - labelHeight - padding, self.view.frame.size.width, labelHeight)];
l.text = @"Hello World";
[v addSubview:l];
[self.tableView setBackgroundView:v];
于 2016-08-08T05:54:55.397 に答える