簡體   English   中英

調整uitableview部分頁腳的高度

[英]Adjusting the height of a uitableview section footer

我剛剛開始使用UITableView節的頁腳,但是遇到了一些問題。 所以我有一個UITableView,使用頁腳在底部附加了一個編輯按鈕。 我的第一個問題是,當您單擊該按鈕時,頁腳的大小應加倍,因為編輯按鈕將變為添加按鈕和完成按鈕,而不僅僅是一個按鈕。 什么是增加頁腳大小的最佳方法。 我試圖通過self.tableView.tableFooterView.frame = CGRectMake(0, 0, 320, 88);更改頁腳的框架self.tableView.tableFooterView.frame = CGRectMake(0, 0, 320, 88); 但這不起作用。

我的第二個問題是,我希望頁腳始終與表格一起滾動,就像它只是另一個單元格一樣。 無論如何,它都應該位於表格的底部。 如果用戶向下滾動,則它不應停在屏幕底部並停留在屏幕上,而應繼續滾動其余的tableview。 我該如何解決?

這是我創建頁腳的方法:

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

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

    self.addButton = [UIButton buttonWithType:UIButtonTypeCustom];
    self.addButton.frame = CGRectMake(0, 0, 320, 44);
    [self.addButton setImage:[UIImage imageNamed:@"Add_Class_Button"] forState:UIControlStateNormal];
    [self.addButton setImage:[UIImage imageNamed:@"Add_Class_Button"] forState:UIControlStateHighlighted];
    [self.addButton addTarget:self action:@selector(addSelected:) forControlEvents:UIControlEventTouchUpInside];
    self.addButton.hidden = YES;
    [view addSubview:self.addButton];

    self.editButton = [UIButton buttonWithType:UIButtonTypeCustom];
    self.editButton.frame = CGRectMake(0, 0, 320, 44);
    [self.editButton setImage:[UIImage imageNamed:@"Edit_Classes_Button"] forState:UIControlStateNormal];
    [self.editButton setImage:[UIImage imageNamed:@"Edit_Classes_Button"] forState:UIControlStateHighlighted];
    [self.editButton addTarget:self action:@selector(editSelected:) forControlEvents:UIControlEventTouchUpInside];
    [view addSubview:self.editButton];

    self.editDoneButton = [UIButton buttonWithType:UIButtonTypeCustom];
    self.editDoneButton.frame = CGRectMake(0, self.addClassButton.frame.size.height-2, 320, 44);
    [self.editDoneButton setImage:[UIImage imageNamed:@"Edit_Classes_Button"] forState:UIControlStateNormal];
    [self.editDoneButton setImage:[UIImage imageNamed:@"Edit_Classes_Button"] forState:UIControlStateHighlighted];
    [self.editDoneButton addTarget:self action:@selector(doneSelected) forControlEvents:UIControlEventTouchUpInside];
    self.editDoneButton.hidden = YES;
    [view addSubview:self.editDoneButton];

    self.editLabel = [[UILabel alloc] init];
    self.editLabel.frame = CGRectMake(10, 5, 100, 30);
    self.editLabel.text = @"Edit";
    self.editLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:17];
    [view addSubview:self.editLabel];

    self.addLabel = [[UILabel alloc] init];
    self.addLabel.frame = CGRectMake(10, 5, 100, 30);
    self.addLabel.text = @"Add";
    self.addLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:17];
    self.addLabel.hidden = YES;
    [view addSubview:self.addLabel];

    self.editDoneLabel = [[UILabel alloc] init];
    self.editDoneLabel.frame = CGRectMake(10, self.addClassButton.frame.size.height + 5, 150, 30);
    self.editDoneLabel.text = @"Done";
    self.editDoneLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:17];
    self.editDoneLabel.hidden = YES;
    [view addSubview:self.editDoneLabel];

    self.theLine = [[UIView alloc] init];
    self.theLine.frame = CGRectMake(0, 0, 320, .5);
    UIColor *borderColor = [UIColor colorWithRed:193/255.5 green:193/255.0 blue:193/255.0 alpha:1.0];
    self.theLine.backgroundColor = borderColor;
    [view addSubview:self.theLine];

    return view;
}

編輯

在考慮了下面的答案之后,這就是我已經切換到的內容,但是現在我的頁腳曾經是,只有一個灰色矩形。

這是我現在使用的代碼:

-(void)setUpFooter {

    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 48)];
    view.backgroundColor = [UIColor redColor];

    self.addButton = [UIButton buttonWithType:UIButtonTypeCustom];
    self.addButton.frame = CGRectMake(0, 0, 320, 44);
    [self.addButton setImage:[UIImage imageNamed:@"Add_Class_Button"] forState:UIControlStateNormal];
    [self.addButton setImage:[UIImage imageNamed:@"Add_Class_Button"] forState:UIControlStateHighlighted];
    [self.addButton addTarget:self action:@selector(addSelected:) forControlEvents:UIControlEventTouchUpInside];
    self.addButton.hidden = YES;
    [view addSubview:self.addButton];

    self.editButton = [UIButton buttonWithType:UIButtonTypeCustom];
    self.editButton.frame = CGRectMake(0, 0, 320, 44);
    [self.editButton setImage:[UIImage imageNamed:@"Edit_Classes_Button"] forState:UIControlStateNormal];
    [self.editButton setImage:[UIImage imageNamed:@"Edit_Classes_Button"] forState:UIControlStateHighlighted];
    [self.editButton addTarget:self action:@selector(editSelected:) forControlEvents:UIControlEventTouchUpInside];
    [view addSubview:self.editButton];

    self.editDoneButton = [UIButton buttonWithType:UIButtonTypeCustom];
    self.editDoneButton.frame = CGRectMake(0, self.addClassButton.frame.size.height-2, 320, 44);
    [self.editDoneButton setImage:[UIImage imageNamed:@"Edit_Classes_Button"] forState:UIControlStateNormal];
    [self.editDoneButton setImage:[UIImage imageNamed:@"Edit_Classes_Button"] forState:UIControlStateHighlighted];
    [self.editDoneButton addTarget:self action:@selector(doneSelected) forControlEvents:UIControlEventTouchUpInside];
    self.editDoneButton.hidden = YES;
    [view addSubview:self.editDoneButton];

    self.editLabel = [[UILabel alloc] init];
    self.editLabel.frame = CGRectMake(10, 5, 100, 30);
    self.editLabel.text = @"Edit";
    self.editLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:17];
    [view addSubview:self.editLabel];

    self.addLabel = [[UILabel alloc] init];
    self.addLabel.frame = CGRectMake(10, 5, 100, 30);
    self.addLabel.text = @"Add";
    self.addLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:17];
    self.addLabel.hidden = YES;
    [view addSubview:self.addLabel];

    self.editDoneLabel = [[UILabel alloc] init];
    self.editDoneLabel.frame = CGRectMake(10, self.addClassButton.frame.size.height + 5, 150, 30);
    self.editDoneLabel.text = @"Done";
    self.editDoneLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:17];
    self.editDoneLabel.hidden = YES;
    [view addSubview:self.editDoneLabel];

    self.theLine = [[UIView alloc] init];
    self.theLine.frame = CGRectMake(0, 0, 320, .5);
    UIColor *borderColor = [UIColor colorWithRed:193/255.5 green:193/255.0 blue:193/255.0 alpha:1.0];
    self.theLine.backgroundColor = borderColor;
    [view addSubview:self.theLine];

    view.userInteractionEnabled = YES;
    self.classTableView.tableFooterView = view;
    self.classTableView.tableFooterView.userInteractionEnabled = YES;

}

希望我能幫上忙。

要設置節的頁腳高度,還必須在heightForFooterInSection方法中更改返回值。 要重新加載高度,可以調用[tableView reloadData][tableView reloadSections:...]

表格部分的頁腳始終固定在屏幕底部,但是在表格視圖之后放置東西的視圖不同。 tableView.tableFooterView是一個位於表視圖之后的視圖。 更改此項以在表視圖之后添加元素。

干杯!

UITableView有兩種類型的頁腳。 表格底部有表格頁腳,每個部分的底部都有表格部分頁腳。

聽起來您想使用表標題。 但是,您的代碼段將設置表格頁腳的框架,而不是表格部分頁腳的框架。

self.tableView.tableFooterView.frame = CGRectMake(0, 0, 320, 88); 

如果要調整表節的頁腳高度,則tableView:heightForFooterInSection:方法將需要返回不同的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM