激活单个表中特定部分的标题委托的视图

时间:2013-08-29 13:13:27

标签: iphone ios uitableview

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

  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;
    }
    
  3. 这是我的输出的图像,其中Texto文本显示但是按钮在表视图滚动高度的结束限制以及第0和第1部分标题未显示的区域下面我也阻止第1和第2部分的代码viewforheaderinsection。提前致谢。 Image

1 个答案:

答案 0 :(得分: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;
}