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

{

    NSString *sectionTitle = @"";

    if(section == 0)
        sectionTitle = @"Overall Progress";
    else
        sectionTitle = [[courses objectAtIndex:section-1] objectForKey:@"course-name"];

    // Create label with section title
    UILabel *label = [[[UILabel alloc] init] autorelease];

    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
    {
        label.frame = CGRectMake(15, 10, 300, 30);
        label.font = [UIFont boldSystemFontOfSize:14];
    }
    else
    {
        label.frame = CGRectMake(50, 20, 600, 60);
        label.font = [UIFont boldSystemFontOfSize:19];

    }

    label.text = sectionTitle;
    label.backgroundColor = [UIColor clearColor];
    [label sizeToFit];
    // Create header view and add label as a subview
    UIView *view;
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){

        view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 100)];
    }
    else{
        view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 640, 500)];
        view.backgroundColor = [UIColor clearColor];
    }

    [view addSubview:label];
    [view autorelease];
    return view;
}

在此代码部分中,当我调试时返回 1,因此第 0 部分代码不会被执行。因此,我无法在表头视图中获得整体进度文本。

4

2 回答 2

3

解决方案是使用您想要的高度实现 heightForHeaderInSection。

   - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
    {
        return 44;
    }

从 tableView:heightForHeaderInSection:

在 iOS 5.0 之前,对于 tableView:viewForHeaderInSection: 返回 nil 视图的部分,表视图会自动将标题的高度调整为 0。在 iOS 5.0 及更高版本中,您必须在此方法中返回每个节标题的实际高度。

从 tableView:viewForHeaderInSection:

返回的对象可以是 UILabel 或 UIImageView 对象,也可以是自定义视图。此方法仅在同时实现 tableView:heightForHeaderInSection: 时才能正常工作。

参见UITableViewDelegate 协议参考

于 2014-01-20T21:33:31.557 回答
0

tableView:heightForHeaderInSection: 的实现是什么?如果你在第 0 部分返回 0,那么我们的视图将被调整为根本不可见。

于 2013-11-13T12:47:35.727 回答