0

我正在开发一个应用程序,我需要标题来自定义和添加我自己的按钮,只是为了单个部分。我用谷歌搜索并完成了一些可以添加按钮的代码,但我面临两个问题。

  1. 其他部分的标题未显示。
  2. 添加按钮后,由于 tableview 滚动大小相同,按钮无法正确显示。这就是我正在做的事情。

    - (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
    
        UIView * headerView = [[[UIView alloc] initWithFrame:CGRectMake(1, 0, tableView.bounds.size.width, 40)] autorelease];
        [headerView setBackgroundColor:[UIColor clearColor]];
    if(section==2){
        float width = tableView.bounds.size.width;
        int fontSize = 18;
        int padding = 10;
    
        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(padding, 2, width - padding, fontSize)];
        label.text = @"Texto";
        label.backgroundColor = [UIColor clearColor];
        label.textColor = [UIColor whiteColor];
        label.shadowColor = [UIColor darkGrayColor];
        label.shadowOffset = CGSizeMake(0,1);
        label.font = [UIFont boldSystemFontOfSize:fontSize];
    
        [headerView addSubview:label];
    
        UIButton * registerButton = [UIButton buttonWithType:UIButtonTypeCustom];
        [registerButton setImage:[UIImage imageNamed:@"P_register_btn.png"] forState:UIControlStateNormal];
        [registerButton setFrame:CGRectMake(0, 0, 320, 150)];
        [headerView addSubview:registerButton];
    
    
        return headerView;
    }
        return headerView;
    
    }
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    
    return 3;
    }
    
     - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
    if(section==0)
        return @"Registration";
    else if(section==1)
        return @"Player Detail";
    return nil;
    }
    

这是我的输出图像,其中 Texto 文本显示,但按钮位于表格视图滚动高度的结束限制以及第 0 节和第 1 节标题未显示的区域下方,我还阻止了 viewforheaderinsection 中第一节和第二节的代码。提前致谢。 图片

4

1 回答 1

0

其他标头名称不会出现,因为 viewForHeader 方法只回答第 2 节。一旦实施,数据源期望该方法成为所有标头的权限。只需为其他部分添加一些其他逻辑....

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

    UIView * headerView;
    UILabel *label;

    if (section==2) {
        headerView = [[[UIView alloc] initWithFrame:CGRectMake(1, 0, tableView.bounds.size.width, 40)] autorelease];
        [headerView setBackgroundColor:[UIColor clearColor]];
        // and so on
        return headerView;

    } else if (section == 0) {
        label = [[[UILabel alloc] initWithFrame:CGRectMake(0,0,tableView.bounds.size.width, 44)] autorelease];
        label.text = @"Section 0 Title";
        return label;
    } else .. and so on

此方法回答的标题看起来是 40px 高(参见 initWithFrame),但要添加的按钮是 150px 高(参见 setFrame: 按钮)。这可能是按钮问题的根本原因。尝试实施:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {

    return (section == 2)? 150.0 : UITableViewAutomaticDimension;
}
于 2013-08-29T13:34:01.597 回答