0

UITableView行がなくてもセパレーターを表示します。しかしviewForFooterInSection、セパレーターを使用すると消えてしまいます。どんどん登場してほしいです。私は何をすべきか ?

ここに画像の説明を入力

フッターを追加したときのコードは次のとおりです。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 3;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"s"];

    cell.textLabel.text = [NSString stringWithFormat:@"%d", indexPath.row + 1];
    cell.textLabel.textAlignment = NSTextAlignmentCenter;

    return cell;
}

// -------------------------- footer code start here --------------------------

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    return 40;
}

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
    UIView *view = [[UIView alloc] initWithFrame:CGRectZero];
    view.backgroundColor = [UIColor grayColor];

    UILabel *title = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, 40)];
    title.text = @"footer here";
    title.textAlignment = NSTextAlignmentCenter;
    title.textColor = [UIColor whiteColor];
    [view addSubview:title];

    return view;
}
4

3 に答える 3

0

この github プロジェクトは、いくつかのアドバイスを提供するかもしれません: CLTableWithFooterViewController もちろん、多くのセルがある場合でもフッターを常に画面に表示したい場合は、いくつかの変更が必要です。

于 2013-11-14T08:53:08.643 に答える
0

削除する- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section

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

このコードを使用して、フッターを下げたままにし (常に表示されます)、セパレーターを保持します。

@implementation tableView {

__weak UIView *_staticView;

}

- (void)viewDidLoad {

UIView *staticView = [[UIView alloc] initWithFrame:CGRectMake(0, self.tableView.bounds.size.height-50, self.tableView.bounds.size.width, 50)];
staticView.backgroundColor = [UIColor redColor];
//add other code for UILabel here

[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-11-14T08:54:34.823 に答える